保留虚拟环境中的现有包版本



我有一个名为backup-tool(虚构)的实用程序。这有直接的依赖性 在一个名为security-utils的第三方库(再次虚构)上。而这个 依赖关系依赖于cryptography(真正的依赖关系)。所以backup-toolcryptography具有传递依赖性。没有特别的 既不要求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 版本中。

我的问题:是否可以在虚拟环境中暗示点 如果已经安装其他版本的cryptography,则不应安装其他版本 那里?也可以解析依赖关系树以匹配版本 已安装,但改为选择最新版本。

我可以cryptography==2.9.2requirements.txtsetup.pybackup-tool.但由于这是一个 环境比软件约束,对大多数人来说都是无用的限制 设置。

您可以使用约束文件来限制 pip 在安装软件包时应尝试的软件包版本范围。语法是需求文件的语法。

例如constraints.txt

cryptography==2.9.2

为了使 pip 始终读取此约束文件,您可以设置环境变量:

export PIP_CONSTRAINT=constraints.txt

或者,在虚拟环境中,在$VIRTUAL_ENV/pip.conf创建配置:

[install]
constraint = constraints.txt

(路径相对于应用根目录)

相关内容

  • 没有找到相关文章

最新更新