0

如果我运行,从干净的 python 2.7.3 安装开始

pip install -r requirements.txt

具有以下 requirements.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

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

4

2 回答 2

2

pip 并没有天真地区分“运行时”和“编译时”要求。两者numpy都有matplotlib重要的 c/c++ 扩展,需要以正确的顺序完成。

最近有一个与此相关的 PR #2445(我认为)它将进入 1.3.1

于 2013-10-01T14:54:47.647 回答
1

PIP 按字母顺序安装,因此在您的需求脚本中,它会尝试在 numpy 之前安装 matplotlib。由于 matplotlib 依赖于 numpy,它会给出您收到的错误。在通过 requirements.txt 之前做pip install numpy之前 pip install -r requirements.txt安装 numpy,所以这次当它到达 matplotlib 时,已经安装了 numpy。

另请参阅:pip freeze 和依赖顺序

于 2013-10-01T14:51:45.547 回答