我有两个python包(蝗虫群和蝗虫插件(。两者都没有严格的要求,但它们可以一起工作,我的用户可以单独安装它们。
有时,其中一个或另一个发生了突破性的更改,我想确保没有人安装不兼容的版本(例如,通过更新包a而不是包B(。有没有一种方法可以指定这个";伪依赖性";如果不满意则安装失败?只有在其他软件包已安装时才执行检查。
我不想添加一个包作为另一个包的依赖项,并强迫包a的用户安装包B,只是为了能够处理这种情况。
也许这个问题以前有人问过,但我找不到答案。
我认为您可以在A/setup.py
文件中执行此操作(在B/setup.py
文件中也是如此,只需将package_B_name
更改为package_A_name
:
import importlib.util
spec = importlib.util.find_spec(f'{package_B_name}')
if spec is not None:
requirements_list.append(f'{package_B_name}>={package_B_version}')
请注意,这仅适用于Python3.3+,并且仅适用于源发行版。当从二进制轮子(.whl(安装时,它将不起作用
如果您知道如何根据要求将requirements.txt转换为setup.py文件,请尝试以下操作:
my-package>=minimum.version
这将检查包是否大于此特定版本或是此最低版本,从而生成最低版本。
我不知道我是否正确理解了这个问题,但你可以在设置函数中指定install_requires
数组中所需的最低版本。
install_requires=['locust-swarm >= 1.2', 'locust-plugins >= 1.1']
我希望这能回答你的问题,如果没有,请告诉我,我会进一步调查的。