安装numpy和matplotlib时,pip依赖关系解析失败

时间:2013-10-01 14:36:26

标签: python numpy matplotlib pip

从干净的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

然后一切正常。这里发生了什么?

2 个答案:

答案 0 :(得分:2)

pip并不天真地区分“运行时”和“编译时”要求。 numpymatplotlib都有重要的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。

另请参阅:pip freeze and order of dependencies