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.