Ripristina l'opzione `--no-site-pacchetti` con virtualenv


126

Ho creato un virtualenv usando l' --no-site-packagesopzione e installato molte librerie. Ora vorrei ripristinare l' --no-site-packagesopzione e utilizzare anche i pacchetti globali.

Posso farlo senza ricreare virtualenv?

Più precisamente:

Mi chiedo cosa succede esattamente quando si crea un virtualenv usando l' --no-site-packagesopzione invece di non usare quell'opzione.

Se so cosa succede, posso capire come annullarlo.


un'altra domanda è stata contrassegnata come duplicata di questa e ha ricevuto una risposta che potrebbe essere interessante anche qui.
mariotomo,

Risposte:


162

Prova a rimuovere (o rinominare) il file no-global-site-packages.txtnella Libcartella nel tuo ambiente virtuale.

Dove venv è il nome del tuo ambiente virtuale e python3.4 corrisponde a qualsiasi versione di python coinvolta, ad esempio:

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

E se cambi idea e vuoi rimetterlo:

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

Nota: se non vedi il file sopra, hai una versione più recente di virtualenv. Ti consigliamo di seguire questa risposta invece


18
Quello lo farà. L'esistenza (o inesistenza) di quel file è l'unico effetto diretto del flag no-site-pacchetti. Il sito.py personalizzato di Virtualenv cerca quel file per decidere se aggiungere le directory dei pacchetti di siti globali a sys.path.
Carl Meyer,

Brillante! Questo è stato fatto! Grazie mille per la risposta e grazie a Carl Meyer per il commento aggiuntivo.
Olivier Verdier,

1
è virtualenv/python2.7/no-global-site-packages.txtnel mio server Ubuntu.
Caesarsol,

4
La versione Windows di virtualenv contiene virtualenv/pyenv.cfgfile. Esiste un'opzione per i pacchetti del sito: include-system-site-packages = false modifica questo valore e chiama Activate.ps1
georgik

@georgik - che funziona anche con la versione Linux di venvper Python 3.4.
Tomasz Dzieniak,

13

Almeno per Python 3.5.2, c'è un pyvenv.cfgfile nella radice della directory virtualenv. Tutto quello che devi fare è cambiare include-system-site-packagesbandiera da falsea true:

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

12

Quando si utilizza virtualenvwrapper per gestire virtualenvs, è possibile utilizzare la funzione shell toggleglobalsitepackagesper alternare tra l'utilizzo e non l'uso dei pacchetti del sito.


2

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


+1 Funziona sul mio sistema (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4); Non ho un da no-global-site-packages.txtnessuna parte.
Aaron Digulla,

2

Vai alla tua cartella venv e apri pyvenv.cfg. (Ad esempio, se viene chiamato myenvl' ambiente virtuale, il file si troverà in myenv\pyvenv.cfg)

Vedrai un'impostazione booleana chiamata include-system-site-packages

Impostare tale impostazione su trueper utilizzare i pacchetti globali

Se si desidera disabilitare l'uso dei pacchetti globali, è sufficiente impostare tale impostazione su false.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.