在安装点需求时忽略一些要求
问题描述:
我正在使用requirements.txt
来安装我的virtualenv的需求。我使用可以在远程主机上安装需求的部署。在安装点需求时忽略一些要求
问题:
忽略一些要求
忽略已经安装的要求(像
pip freeze
如果包装出现时,不要安装它,甚至不升级)
根据我的解决方案:
我可以grep安装的软件包,并进行
requirements2.txt
只有需要的人。 (另外,删除从GIT安装的软件包)我不明白
--ignore-installed
会在这种情况下做什么?其他解决方案?
答
对于选择性依赖安装,唯一的办法确实是按照您的标准到grep /过滤requirements.txt
文件。然而,很少有现成的解决方案可能是使用:
如果你有一个virtualenv中,只需要迅速升级到了新的要求或版本的限制,但如果现有的包满足不升级标准,你可以使用
pip install -U --upgrade-strategy=only-if-needed ...
由于手册说:
--upgrade-strategy <upgrade_strategy>
确定依赖升级应如何处理。 “渴望” - 依赖关系升级 ,不管当前安装的版本是否满足升级包的要求 。 “仅 - 如果需要” - 仅在 不符合 升级包的要求时才升级。
对于可选的依赖关系,典型的解决方案是setuptools的extra requirements。例如,我用它来开发& DOC建设要求:
# setup.py
setup(
...,
extras_require={
'dev': ["pdbpp", "ipython"],
'doc': ["sphinx"],
},
)
然后你就可以安装如下,无论是从PyPI中/ DevPI回购,并在本地(为可编辑库):
pip install mylib[dev]
pip install mylib[doc]
pip install -e .[doc,dev]
您可以使用可选的依赖关系为“额外模式”定义任何名称。
'pip install'已经忽略了已经安装的任何东西。你是什么意思*“忽略一些要求”*,那么代码将如何工作? – jonrsharpe
@jonrsharpe对于这项任务不一定是正确的;但通常一些要求是可选的并且使安装更麻烦。当我知道我不需要这个时,我经常从windows的cvxpy中移除一些解算器(ecos)。但是这需要对lib的一些理解。 – sascha
您是否研究过提供'setup.py',以便您清楚哪些是需求,哪些是额外的? – jonrsharpe