2013-10-01 4 views
0

Начиная с чистой установки питон 2.7.3, если я бегупип зависимость не выполняется при установке как NumPy и Matplotlib

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 

затем пип попытки установить Matplotlib перед тем NumPy и терпит неудачу с:

============================================================================ 
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

возможного дубликата [требований Matplotlib с пип установить в virtualenv] (http://stackoverflow.com/questions/11797688/Matplotlib-требования-с-пип-установки-в-virtualenv) – bmu

ответ

2

пип не наивности различия между требованиями 'compiletime' выполнения 'и. Оба numpy и matplotlib имеют значительные расширения c/C++, которые необходимо выполнить в правильном порядке.

Был недавний PR #2445, связанные с этим, которые (я думаю) сделать это в 1.3.1

1

PIP устанавливается в алфавитном порядке, поэтому в вашем скрипте требований он пытается установить matplotlib перед numpy. Поскольку matplotlib зависит от numpy, он дает полученную вами ошибку. Выполнение pip install numpy до pip install -r requirements.txt устанавливает numpy до того, как оно пройдет через файл требований.txt, поэтому на этот раз, когда он дойдет до matplotlib, numpy уже установлен.

Смотрите также: pip freeze and order of dependencies

Смежные вопросы