安装点数要求时忽略一些要求

时间:2017-01-16 14:45:20

标签: python bash pip requirements.txt

我正在使用requirements.txt来安装virtualenv的要求。我将ansible用于在远程主机上安装需求的部署。

问题:

  1. 忽略一些要求

  2. 忽略已安装的要求(类似于pip freeze,如果包显示,请不要安装,甚至不升级)

  3. 根据我的解决方案:

    1. 我可以grep已安装的软件包,并使requirements2.txt只有所需的软件包。 (另外,从GIT中删除正在安装的软件包)

    2. 我不明白--ignore-installed在这种情况下会做什么?

    3. 还有其他解决方案吗?

1 个答案:

答案 0 :(得分:1)

对于选择性依赖项安装,唯一的方法是根据您的条件对requirements.txt文件进行grep /过滤。但是,很少有现成的解决方案可能有用:

如果您有virtualenv并且只需要将其快速升级到新的要求或版本限制,但如果现有包符合条件则不升级,您可以使用

pip install -U --upgrade-strategy=only-if-needed  ...

正如手册所说:

  

--upgrade-strategy <upgrade_strategy>   确定应如何处理依赖项升级。 “渴望” - 依赖关系升级   无论当前安装的版本是否满足   升级包的要求。 “只有 - 如果需要” - 是   只有当他们不满足要求时才升级   升级包。

对于可选的依赖项,典型的解决方案是setuptools'extra requirements。例如,我将它用于开发和发展。文档构建要求:

# setup.py
setup(
    ...,
    extras_require={
        'dev': ["pdbpp", "ipython"],
        'doc': ["sphinx"],
    },
)

然后你可以从PyPI / DevPI repos和本地(作为可编辑的库)安装如下:

pip install mylib[dev]
pip install mylib[doc]
pip install -e .[doc,dev]

您可以使用可选的依赖项为“额外模式”定义任何名称。