2010-04-30 12 views
11

yolk -l mi dà informazioni che ho 114 pacchetti installati sulla mia Ubuntu 10.04. Dopo la creazione di nuova directory virtualenv utilizzandovirtualenv yolk problem

virtualenv virt_env/virt1 --no-site-packages --clear

sono passato a questo, il mio pronta cambiato e quindi yolk -l mi dà ancora una volta gli stessi 114 pacchetti.

Cosa sta succedendo?

+0

L'installazione di tuorlo nell'ambiente virtuale ha aiutato ... molto strano. –

risposta

18

L'attivazione di una virtualenv funziona modificando il PATH della shell in modo che la directory bin/del virtualenv sia la prima. Questo è tutto lo lo fa. Ciò significa che quando si esegue "python" viene eseguita la copia di virtualenv del binario Python invece del proprio python di sistema globale.

Se hai tuorlo installato a livello globale, tuttavia, l'unico binario "tuorlo" sul tuo PERCORSO è/usr/local/bin/tuorlo o alcuni di questi; l'attivazione di virtualenv non cambia questo (perché non c'è uno script "tuorlo" nel tuo virtualenv bin/dir). E lo script/usr/local/bin/tuorlo ha naturalmente l'interprete Python di sistema nella sua linea shebang.

Ecco perché l'installazione di tuorlo in virtualenv risolve il problema; perché aggiunge uno script tuorlo nel tuo virtualenv bin/dir che ha il python del virtualenv nella sua linea shebang.

Se non si desidera installare il tuorlo in ogni virtualenv, è anche possibile copiare il wrapper di tuorlo da/usr/local/bin o ovunque si trovi nella directory bin del virtualenv e modificare manualmente la riga shebang per indicare il python del tuo virtualenv. Questo però non funzionerà con un virtualenv di --no-site-packages, perché il wrapper dello script non sarà in grado di trovare i pacchetti di tuorlo che deve importare! Se vuoi usare il tuorlo in un pacchetto virtuale -no-site-virtualen, la tua unica scelta è installarlo lì.

+1

Questo può essere fatto automaticamente ogni volta che crei un venv con uno script di bootstrap: http://www.virtualenv.org/en/latest/#creating-your-own-bootstrap-scripts – Hollister

+0

Se stai usando virtualenvwrapper (che Consiglio vivamente), aggiungi 'pip install yolk' al file postmkvirtualenv. http://www.doughellmann.com/docs/virtualenvwrapper/scripts.html#scripts-postmkvirtualenv – Hollister

0

Se il problema non si riferisce al percorso (suppongo che lo sia), eliminare la cartella lib e scripts nella directory del progetto per cancellare le impostazioni virtualenv. Ricrea l'env virtuale usando la riga di comando che hai postato. Attivare il virtualenv e quindi installare tuorlo.

+1

In alternativa, prova 'quale tuorlo' - se è in (yourvirtualenv)/bin, prova a chiudere il terminale e riaprirlo, attivando il tuo virtualenv e prova "tu" -l "ancora una volta. Risolto il problema per me – maxm