使虚拟环境中的现有包版本保持不变
Make Existing Package Version in Virtual Environment Stick
我有一个名为 backup-tool
的实用程序(虚构)。这具有直接依赖性
在名为 security-utils
的第三方库(又是虚构的)上。和这个
依赖项依赖于 cryptography
(真正的依赖项)。所以,
backup-tool
对 cryptography
具有传递依赖性。没有特别的
backup-tool
和 security-utils
.
均不需要版本
现在我有两台服务器:一台运行ning Linux,一台运行ning 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
。但由于这是一个
环境而不是软件约束,这对大多数人来说都是无用的限制
设置。
您可以使用 constraints file 来限制 pip 在安装包时应该尝试的包版本范围。语法是需求文件的语法。
例如constraints.txt
:
cryptography==2.9.2
为了让 pip 始终读取此约束文件,您可以设置环境变量:
export PIP_CONSTRAINT=constraints.txt
或者,在虚拟环境下,在 $VIRTUAL_ENV/pip.conf
:
创建配置
[install]
constraint = constraints.txt
(路径相对于您的应用根目录)
我有一个名为 backup-tool
的实用程序(虚构)。这具有直接依赖性
在名为 security-utils
的第三方库(又是虚构的)上。和这个
依赖项依赖于 cryptography
(真正的依赖项)。所以,
backup-tool
对 cryptography
具有传递依赖性。没有特别的
backup-tool
和 security-utils
.
现在我有两台服务器:一台运行ning Linux,一台运行ning 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
。但由于这是一个
环境而不是软件约束,这对大多数人来说都是无用的限制
设置。
您可以使用 constraints file 来限制 pip 在安装包时应该尝试的包版本范围。语法是需求文件的语法。
例如constraints.txt
:
cryptography==2.9.2
为了让 pip 始终读取此约束文件,您可以设置环境变量:
export PIP_CONSTRAINT=constraints.txt
或者,在虚拟环境下,在 $VIRTUAL_ENV/pip.conf
:
[install]
constraint = constraints.txt
(路径相对于您的应用根目录)