从干净的python 2.7.3安装开始,如果我运行
pip install -r requirements.txt
具有以下要求.txt:
Flask==0.10.1
Flask-Cache==0.12
Jinja2==2.7.1
MarkupSafe==0.18
Werkzeug==0.9.4
gunicorn==18.0
itsdangerous==0.23
wsgiref==0.1.2
numpy==1.7.1
PIL==1.1.7
matplotlib==1.2.1
然后pip尝试在numpy之前安装matplotlib并失败并执行:
============================================================================
BUILDING MATPLOTLIB
matplotlib: 1.2.1
python: 2.7.3 (default, Jan 2 2013, 13:56:14) [GCC 4.7.2]
platform: linux2
REQUIRED DEPENDENCIES
numpy: no
* You must install numpy 1.4 or later to build
* matplotlib.
Complete output from command python setup.py egg_info:
basedirlist is: ['/usr/local', '/usr']
============================================================================
然而,如果我这样做
pip install numpy
pip install -r requirements.txt
然后一切正常。这里发生了什么?
答案 0 :(得分:2)
pip并不天真地区分“运行时”和“编译时”要求。 numpy
和matplotlib
都有重要的c / c ++扩展,需要按正确的顺序完成。
最近有一个PR #2445与此相关,我认为会将其变为1.3.1
答案 1 :(得分:1)
PIP按字母顺序安装,因此在您的需求脚本中,它会尝试在numpy之前安装matplotlib。由于matplotlib依赖于numpy,它会给出您收到的错误。在pip install numpy
之前pip install -r requirements.txt
安装numpy之前执行{{1}}才能通过requirements.txt,所以这次到达matplotlib时,已经安装了numpy。