2010-07-30 3 views
106

Ho creato un virtualenv usando l'opzione --no-site-packages e installato molte librerie. Ora vorrei ripristinare l'opzione --no-site-packages e utilizzare anche i pacchetti globali.Ripristina l'opzione `--no-site-packages` con virtualenv

Posso farlo senza ricreare il virtualenv?

Più precisamente:

mi chiedo che cosa esattamente accade quando si crea un virtualenv utilizzando l'opzione --no-site-packages al contrario di non utilizzare questa opzione.

Se so cosa succede, posso capire come annullarlo.

+0

[un'altra domanda] (http://stackoverflow.com/questions/12433198/) è stato contrassegnato come duplicato di questo, ed è ha ricevuto una risposta che potrebbe essere interessante anche qui. – mariotomo

risposta

138

Prova a rimuovere (o ridenominazione) il file nella cartella no-global-site-packages.txtLib sotto il vostro ambiente virtuale.

Dove venv è il nome del vostro ambiente virtuale, e python3.4 corrisponde a qualsiasi versione di Python ha coinvolto, per esempio:

$ rm venv/lib/python3.4/no-global-site-packages.txt 

E se si cambia idea e si desidera mettere it Back:

$ touch venv/lib/python3.4/no-global-site-packages.txt 
+15

Questo lo farà. L'esistenza (o non esistenza) di quel file è l'unico effetto diretto del flag no-site-packages. Site.py personalizzato di Virtualenv cerca quel file per decidere se aggiungere directory di pacchetti di siti globali a sys.path. –

+0

Brillante! L'ha fatto! Grazie mille per la risposta, e grazie a Carl Meyer per il commento aggiuntivo. –

+1

questo è 'virtualenv/python2.7/no-global-site-packages.txt' nel mio server ubuntu. – caesarsol

2

provare ad aggiungere un collegamento simbolico tra il /virtualenv_root/lib/ e /path/to/desired/site-packages/

+0

+1 Funziona sul mio sistema (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4); Non ho un "no-global-site-packages.txt" ovunque. –

9

Quando si utilizza per gestire virtualenvwrapper virtualenvs, è possibile utilizzare la funzione shell toggleglobalsitepackages per passare da utilizzare e non usare pacchetti del sito.

5

Almeno per Python 3.5.2, vi è il file pyvenv.cfg nella directory principale della directory virtualenv. Tutto quello che dovete fare è di cambiare include-system-site-packages bandiera da false a true:

home = /usr/bin 
include-system-site-packages = false # <- change this to "true" 
version = 3.5.2