如何指定Python pip的安装顺序?
我正在使用fabric(0.9.4)和pip(0.8.2),需要在多个服务器上安装一些Python模块。所有服务器上的setuptools版本都很旧(0.6c8),为了安装pymongo模块,需要把它升级到新版本。因为pymongo要求setuptools的版本要大于等于0.6c9。
我遇到的问题是,pip在安装pymongo的时候,先开始安装pymongo而不是setuptools,这导致pip无法继续安装。即使我在requirements文件中调整模块的顺序,也没有什么帮助。
requirements.txt:
setuptools>=0.6c9
pymongo==1.9
simplejson==2.1.3
有没有办法指定pip的安装顺序?因为它似乎自己处理得不好。
虽然可以用两个不同的requirements文件来解决这个问题,但我希望现在和将来都不需要维护多个requirements文件。
这个问题在pip 0.8.3中依然存在。
10 个回答
24
为了在requirements.txt文件中允许所有类型的条目(比如来自git仓库的包),你需要使用以下一组命令。
cat requirements.txt | xargs -n 1 -L 1 pip install
-n 1和-L 1这两个选项是必须的,它们的作用是让你一个一个地安装包,并把requirements.txt文件中的每一行都当作一个单独的项目来处理。
40
你可以直接使用:
cat requirements.txt | xargs pip install
18
这其实是个小技巧,虽然有点傻,但可能会有效。你可以写一个bash脚本,让它逐行读取你的需求文件,然后对每一行执行pip命令。
#!/bin/bash
for line in $(cat requirements.txt)
do
pip install $line -E /path/to/virtualenv
done