Sep*_*älä 54 python pip virtualenv requirements.txt
我正在使用fabric(0.9.4)+ pip(0.8.2),我需要为多个服务器安装一些python模块.所有服务器都有旧版本的setuptools(0.6c8),需要升级为pymongo模块.Pymongo需要setuptools> = 0.6c9.
我的问题是pip开始用pymongo而不是setuptools安装,导致pip停止.需求文件中的随机模块顺序似乎没有帮助.
requirements.txt:
setuptools>=0.6c9
pymongo==1.9
simplejson==2.1.3
Run Code Online (Sandbox Code Playgroud)
有没有办法为pip指定安装顺序,因为它似乎没有正确地执行它?
这可以通过两个单独的需求文件来解决,但如果我现在或将来不需要维护多个需求文件,那将会很好.
点数0.8.3仍然存在问题.
luc*_*300 27
你可以使用:
cat requirements.txt | xargs pip install
Run Code Online (Sandbox Code Playgroud)
rub*_*eet 14
这是一个愚蠢的黑客,但可能只是工作.编写一个bash脚本,逐行读取需求文件并在其上运行pip命令.
#!/bin/bash
for line in $(cat requirements.txt)
do
pip install $line -E /path/to/virtualenv
done
Run Code Online (Sandbox Code Playgroud)
Chr*_*ski 13
要在requirements.txt中允许所有类型的条目(例如来自git存储库的包),您需要使用以下命令集
cat requirements.txt | xargs -n 1 -L 1 pip install
Run Code Online (Sandbox Code Playgroud)
-n 1和-L 1选项是逐个安装软件包并将requirements.txt文件中的每一行视为单独项目所必需的.
Kev*_*ell 10
遗憾的是升级建议不起作用.如果您阅读https://github.com/pypa/pip/issues/24中的其他详细信息,您将看到原因
在尝试安装之前,pip将首先构建所有包.所以使用如下的需求文件
numpy==1.7.1
scipy==0.13.2
statsmodels==0.5.0
Run Code Online (Sandbox Code Playgroud)
statsmodels的构建将失败,并带有以下语句
ImportError: statsmodels requires numpy
Run Code Online (Sandbox Code Playgroud)
为需求文件中的每个条目手动调用pip的解决方法(通过shell脚本)似乎是目前唯一的解决方案.
继@lukasrms 的解决方案之后 - 我必须这样做才能让 pip 一次安装我的需求:
cat requirements.txt | xargs -n 1 pip install
Run Code Online (Sandbox Code Playgroud)
如果您的需求文件中有评论,则需要使用:
grep -v "^#" requirements.txt | xargs pip install
Run Code Online (Sandbox Code Playgroud)
Pymongo需要setuptools> = 0.6c9
你怎么知道的?需要构建还是要安装?你没有说你试图安装什么版本的Pymongo,但是查看setup.py当前(3.2.2)版本的文件,没有规定Pymongo运行所需的内容setup.py(setup_requires)以及安装所需的内容(install_requires).没有这样的信息,pip无法确保特定版本的setuptools.如果Pymongo需要特定版本的setuptools来运行它setup.py(而不是要求setuptools运行setup函数本身),那么另一个问题是直到最近还没有办法指定它.现在有规范--PEP 518 - 为Python项目指定最低构建系统要求,应该很快在pip中实现 - 实现PEP 518支持#3691.
关于安装顺序,这在6.1.0中已经修复;
从pip install - pip文档的安装顺序部分:
从v6.1.0开始,pip会在其依赖项之前安装依赖项,即以"拓扑顺序".这是目前唯一与订单相关的承诺.
然后:
在v6.1.0之前,pip没有对安装顺序做出任何承诺.
但是,如果Pymongo没有正确规定要求,它也无济于事.
| 归档时间: |
|
| 查看次数: |
15433 次 |
| 最近记录: |