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ì.
fonte
2010-04-30 12:47:51
L'installazione di tuorlo nell'ambiente virtuale ha aiutato ... molto strano. –