2011-08-29 4 views
612

Qui è il problemaCome pip installare i pacchetti in base a requirements.txt da una directory locale?

Ho un requirements.txt che assomiglia:

BeautifulSoup==3.2.0 
Django==1.3 
Fabric==1.2.0 
Jinja2==2.5.5 
PyYAML==3.09 
Pygments==1.4 
SQLAlchemy==0.7.1 
South==0.7.3 
amqplib==0.6.1 
anyjson==0.3 
... 

ho una directory di archiviazione locale contenente tutti i pacchetti + altri.

ho creato un nuovo virtualenv con

bin/virtualenv testing 

su di attivarlo, ho provato ad installare i pacchetti in base alle requirements.txt dalla directory di archiviazione locale.

source bin/activate 
pip install -r /path/to/requirements.txt -f file:///path/to/archive/ 

ho avuto qualche uscita che sembra indicare che l'installazione è bene

Downloading/unpacking Fabric==1.2.0 (from -r ../testing/requirements.txt (line 3)) 
    Running setup.py egg_info for package Fabric 
    warning: no previously-included files matching '*' found under directory 'docs/_build' 
    warning: no files found matching 'fabfile.py' 
Downloading/unpacking South==0.7.3 (from -r ../testing/requirements.txt (line 8)) 
    Running setup.py egg_info for package South 
.... 

Ma spunta poi rivelato nessuno del pacchetto sia installato correttamente. Non riesco a importare il pacchetto, e nessuno si trova nella directory dei pacchetti del mio virtualenv. Quindi cosa è andato storto?

+3

Hai provato a utilizzare '--no-index' in modo che non guardi nemmeno a PyPI? –

+1

Hai tagliato il messaggio di errore. È generalmente vicino al fondo. – bukzor

+0

È possibile utilizzare i percorsi dei file invece dei nomi dei pacchetti, significa che dovrete modificare il file requirements.txt, ma mantenere il comando di installazione di pip lo stesso. – asafge

risposta

344

questo funziona per me:

$ pip install -r requirements.txt --no-index --find-links file:///tmp/packages 

--no-index - Ignora indice dei pacchetti (solo guardando --find-links URL invece).

-f, --find-links <URL> - Se un URL o percorso di un file html, quindi analizzare per i collegamenti agli archivi. Se un percorso locale o l'URL file:// è una directory, cercare gli archivi nell'elenco delle directory.

+5

** Informazioni su '--no-index' dal comando pip help install **' --no-index' Ignora l'indice del pacchetto (solo guardando gli URL '--find-links'). ** Informazioni su '--find-links' dal comando pip help install **' -f', '--find-links ' Se un URL o percorso di un file html, quindi analizzare per i collegamenti agli archivi. Se un percorso o file locale: // url è una directory, quindi cerca gli archivi nell'elenco delle directory. – AWrightIV

+0

//, Questa potrebbe essere una soluzione molto elegante, soprattutto data l'eterna lotta con la vendicazione: http://bitprophet.org/blog/2012/06/07/on-vendorizing/ –

+0

Grazie per me funziona –

908

Ho letto quanto sopra, si rende conto questa è una vecchia questione, ma è del tutto irrisolto e ancora al top dei risultati di ricerca di Google ecco quindi una risposta che funziona per tutti:

pip install -r /path/to/requirements.txt 
+163

Mi rendo conto che questa risposta non risolve la domanda originale, ma risponde alla domanda che avevo quando ho trovato questo su Google ... – Jonathan

+0

La domanda originale è cambiata - nota come sta usando /path/to/requirements.txt adesso . –

+7

@MikeLyons è abbastanza sicuro che la domanda non sia effettivamente cambiata - non c'è una cronologia delle modifiche. –

95

Per virtualenv per installare tutti i file nel file requirements.txt.

  1. cd alla directory in cui si trova requirements.txt
  2. attivare il tuo virtualenv
  3. run: pip install -r requirements.txt nella shell
+2

"pyenv virtualenv pip installa requisiti.txt non funziona" per il piacere di Google ... – Jerad

11

Spesso, si vuole un veloce installazione da archivi locali, senza sondaggio PyPI.

In primo luogo, scaricare gli archivi che soddisfano le vostre esigenze:

$ pip install --download <DIR> -r requirements.txt 

Quindi, installare utilizzando –find-links e –no-index:

$ pip install --no-index --find-links=[file://]<DIR> -r requirements.txt 
+0

questo è fantastico, funziona come un fascino! tnx –

43

Ho avuto un problema simile.Ho provato questo:

pip install -U -r requirements.txt 

(U = aggiornamento se fosse già installato)

Ma il problema ha continuato. Mi sono reso conto che alcune delle librerie generiche per lo sviluppo erano mancate.

sudo apt-get install libtiff5-dev libjpeg8-dev zlib1g-dev liblcms2-dev libwebp-dev tcl8.6-dev tk8.6-dev python-tk 

Non so se questo ti può aiutare.

17
pip install -r requirements.txt 

Per ulteriori dettagli, consultare l'opzione di guida.

pip install --help 

Possiamo trovare l'opzione '-r'

-r, --requirement Installa dal dato file requisiti. Questa opzione può essere utilizzata più volte.

Per ulteriori informazioni su alcuni di uso comune PIP opzioni di installazione: (Questa è l'opzione di aiuto su pip installare comando)

enter image description here

Anche quanto sopra è il set completo di opzioni. Si prega di utilizzare pip install --help per l'elenco completo delle opzioni.

9

Io lavoro con molti sistemi che sono stati ingannati dagli sviluppatori "seguendo le indicazioni che hanno trovato su Internet". È estremamente comune che il tuo pip e il tuo python non guardino gli stessi percorsi/pacchetti del sito. Per questo motivo, quando incontro stranezza mi metto in questo modo:

$ python -c 'import sys; print(sys.path)' 
['', '/usr/lib/python2.7', '/usr/lib/python2.7/plat-x86_64-linux-gnu', 
'/usr/lib/python2.7/lib-tk', '/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages'] 

$ pip --version 
pip 9.0.1 from /usr/local/lib/python2.7/dist-packages (python 2.7) 

Questo è un sistema di felice.

Di seguito è un sistema di infelice. (O almeno è un sistema beatamente ignorante che provoca gli altri a essere infelice.)

$ pip --version 
pip 9.0.1 from /usr/local/lib/python3.6/site-packages (python 3.6) 

$ python -c 'import sys; print(sys.path)' 
['', '/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', 
'/usr/local/Cellar/python/2.7.13/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/site-packages'] 

$ which pip pip2 pip3 
/usr/local/bin/pip 
/usr/local/bin/pip3 

È infelice perché pip è (python3.6 e) utilizzando /usr/local/lib/python3.6/site-packages mentre python è (python2.7 e) utilizzando /usr/local/lib/python2.7/site-packages

Quando voglio fare in modo che sto installando requisiti per il destra pitone, faccio questo:

$ which -a python python2 python3 
/usr/local/bin/python 
/usr/bin/python 
/usr/local/bin/python2 
/usr/local/bin/python3 

$ /usr/bin/python -m pip install -r requirements.txt 

Hai sentito, "Se non è rotto, non provare a risolverlo." La versione di DevOps è "Se non l'hai infranto e puoi aggirare il problema, non provare a risolverlo".

2

INSTALLARE ENV virtuale con python3:

Ho avuto lo stesso problema. Nessuna delle soluzioni di cui sopra ha funzionato per me. Ho trovato la soluzione.

Inizialmente, ho creato il mio ENV virtuale in questo modo:

sudo apt-get install python3-pip 
sudo pip3 install virtualenv 
virtualenv myenv 

Non ha funzionato. Sono stato in grado di installare i requisiti.txt ma non posso importare i moduli. Così ho provato,

virtualenv -p python3 myenv 

attivare l'ambiente utilizzando:

source myenv/bin/activate 

Ora ho installato il requirements.txt utilizza:

pip3 install -r requirements.txt 

installazione ha avuto successo e sono stato in grado di importare i moduli .