【发布时间】:2021-09-01 01:25:37
【问题描述】:
我有一个名为backup-tool(虚构)的实用程序。这有直接的依赖关系
在名为security-utils 的第三方库上(再次虚构)。和这个
依赖项依赖于cryptography(真正的依赖项)。所以,
backup-tool 对 cryptography 有传递依赖。没有特别的
backup-tool 和 security-utils 都不需要版本。
现在我有两台服务器:一台运行 Linux,一台运行 FreeBSD。我创建一个
Linux上的虚拟环境并在其下运行pip install backup-tool。
一切正常。
在 FreeBSD 上,cryptography 版本为 2.9.2 可以不安装任何
问题。但是,其他版本会导致构建失败。 (解决方法可能是
确实找到了,但这不是重点。)
现在我设置了一个虚拟环境并使用pip install cryptography==2.9.2 预安装了正确的版本。稍后——这一切都是在一个自动化的
管道,我无法加入这两个步骤——我的工具是使用pip install backup-tool 安装的。对cryptography 的瞬态依赖被解析为
一个版本 3.x,它不起作用。
但是,如果我在单次运行 pip install backup-tool cryptography==2.9.2
一步,一切正常。这意味着backup-tool 兼容
cryptography 在 2.9.2 版本中。
我的问题:是否可以在虚拟环境中提示 pip
不应安装其他版本的cryptography(如果已经安装)
在那里? 也可以解析依赖树以匹配版本
已安装,但选择的是最新版本。
我可以在
requirements.txt 或 setup.py 的 backup-tool。但由于这是一个
环境而不是软件约束,对于大多数人来说,这将是无用的限制
设置。
【问题讨论】:
标签: python pip dependencies virtualenv dependency-management