2012-06-13 14 views
16

Sto provando ad installare un software python usando il file dei requisiti.pip non riesce a installare i pacchetti da 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 

Così ho creare un ambiente virtuale

>> mkvirtualenv parser 

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

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

... e poi ho i pacchetti scaricati ma non installati con errori: http://pastie.org/4079800

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

Sorprendentemente, se provo ad installare manualmente ogni pacchetto, si installano bene. Per esempio:

>> pip install numpy==1.6.1 

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

sono perduto. Cosa sta succedendo?

PS: Sto usando pip v1.1 e v2.7.2 python con virtualenv e virtualenvwrapper

risposta

15

Sembra che il pacchetto numexpr ha una dipendenza al momento dell'installazione su NumPy. Pip effettua due passaggi per soddisfare le tue esigenze: prima scarica tutti i pacchetti e lancia ciascuno dei rispettivi numeri setup.py per ottenere i suoi metadati, quindi li installa tutti in un secondo passaggio.

Quindi, numexpr sta tentando di importare da numpy nel suo setup.py, ma quando pip esegue per la prima volta setup.py di numexpr, non ha ancora installato numpy.

Questo è anche il motivo per cui non si vede questo errore quando si installano i pacchetti uno a uno: se li si installa uno alla volta, numpy verrà completamente installato nell'ambiente prima di pip install numexpr.

L'unica soluzione è installare pip install numpy prima di eseguire mai pip install -r requirements.txt - non sarà possibile farlo in un unico comando con un singolo file requirements.txt.

Maggiori informazioni qui: https://github.com/pypa/pip/issues/25

+2

Questo appare come un bug di imballaggio in numexpr; il suo setup.py dovrebbe essere modificato per importare solo da numpy se lo stai effettivamente costruendo, ad es. catturando il comando 'ImportError' e procedendo senza 'extra_setup_opts' se stai solo eseguendo' setup.py egg_info'. – ejucovy

+3

Noi (pip) dovremmo probabilmente avere una guida su questo o almeno un link ai documenti esistenti. –

+2

Dovresti [archiviare un problema] (http://code.google.com/p/numexpr/issues/entry) con numexpr – jterrace

Problemi correlati