2012-06-13 35 views
16

Estoy tratando de instalar un software de python usando el archivo de requisitos.pip no puede instalar paquetes desde requirements.txt

>> cat requirements.txt 
Cython==0.15.1 
numpy==1.6.1 
distribute==0.6.24 
logilab-astng==0.23.1logilab-common==0.57.1 
netaddr==0.7.6 
numexpr==2.0.1 
ply==2.5 
pycallgraph==0.5.1 
pyflowtools==0.3.4.1 
pylint==0.25.1 
tables==2.3.1 
wsgiref==0.1.2 

lo tanto, crear un entorno virtual

>> mkvirtualenv parser 

(parser) 
>> pip freeze 
distribute==0.6.24 
wsgiref==0.1.2 

(parser) 
>> pip install -r requirements.txt 

... y luego los paquetes que he descargado pero no instalado con errores: http://pastie.org/4079800

(parser) 
>> pip freeze 
distribute==0.6.24 
wsgiref==0.1.2 

Sorprendentemente, si trato de instalar manualmente cada paquete, se instalan muy bien. Por ejemplo:

>> pip install numpy==1.6.1 

(parser) 
>> pip freeze 
distribute==0.6.24 
wsgiref==0.1.2 
numpy==1.6.1 

estoy perdido. Que esta pasando?

PS: Estoy utilizando pip v1.1 y v2.7.2 python con virtualenv y virtualenvwrapper

Respuesta

15

Parece que el paquete tiene una dependencia numexpr tiempo de instalación en numpy. Pip realiza dos pases a través de tus requisitos: primero descarga todos los paquetes y ejecuta los setup.py de cada uno para obtener sus metadatos, y luego los instala en un segundo pase.

Por lo tanto, numexpr está tratando de importar desde numpy en su setup.py, pero cuando pip primero ejecuta config.py de numexpr, aún no ha instalado numpy.

También es por eso que no ve este error cuando instala los paquetes uno por uno: si los instala de uno en uno, numpy se instalará completamente en su entorno antes de pip install numexpr.

La única solución es instalar pip install numpy antes de ejecutar alguna vez pip install -r requirements.txt - no podrá hacer esto en un solo comando con un único archivo requirements.txt.

Más información aquí: https://github.com/pypa/pip/issues/25

+2

Esto parece un error en el empaquetado en numexpr; su setup.py debe modificarse para importar solo desde numpy si realmente lo está construyendo, p. al capturar el 'ImportError' y continuar sin' extra_setup_opts' si solo ejecuta 'setup.py egg_info'. – ejucovy

+3

Nosotros (pip) probablemente deberíamos tener una guía sobre esto o al menos un enlace a los documentos existentes. –

+2

Debería [presentar un problema] (http://code.google.com/p/numexpr/issues/entry) con numexpr – jterrace

Cuestiones relacionadas