pip - 子依赖项的安装会覆盖requirements.txt上的其他包

时间:2014-01-30 12:34:18

标签: python pip pyramid webassets

我的需求文件是这样的:

https://github.com/sontek/pyramid_webassets/archive/38b0b9f9f4e36dc22b3a5c10eabf4d9228d97740.zip#egg=pyramid_webassets-0.0
https://github.com/miracle2k/webassets/archive/334d55c6bcfd091cb2d984777daf943acde0d364.zip#egg=webassets-0.8.dev

运行pip install -r requirements.txt时我希望它安装特定版本的pyramid_webassets,然后安装特定的webassets版本(0.8.dev)

问题是pyramid_webassets将webassets作为子依赖项,并安装了此软件包的最新版本。

所以pip冻结的输出是

Chameleon==2.14
Mako==0.9.1
MarkupSafe==0.18
PasteDeploy==1.5.2
WebOb==1.3.1
argparse==1.2.1
pyramid==1.4.5
pyramid-webassets==0.0
repoze.lru==0.6
translationstring==1.1
venusian==1.0a8
webassets==0.9
wsgiref==0.1.2
zope.deprecation==4.1.0
zope.interface==4.0.5

你可能会注意到webassets版本是最新版本(0.9)虽然我指定了我想要的版本(0.8.dev)。

我尝试重新排序列表,添加--upgrade标志 - 没有任何帮助。

任何想法如何安装它并仍然具有所需的webassets版本?

感谢。


soultion:

我发现这个推荐很有用:

cat requirements.txt | xargs -L1 pip install

将按顺序逐个安装包

但是我们应该为最后一个包添加--upgrade,以便它升级它。

2 个答案:

答案 0 :(得分:4)

使用pip install选项不安装包依赖项

$ pip install --no-deps -r requirements.txt 

之后进行pip冻结

gottfried@sascha-Latitude-XT2:~/venv$ bin/pip freeze
argparse==1.2.1
pyramid-webassets==0.0
webassets==0.8.dev
wsgiref==0.1.2

参考

答案 1 :(得分:0)

当你将webassets高于列表中的pyramid_webassets时会发生什么?