如果已经安装了另一个软件包,setup.py/pip是否需要该软件包的特定版本



我有两个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']

我希望这能回答你的问题,如果没有,请告诉我,我会进一步调查的。

相关内容

  • 没有找到相关文章

最新更新