2010-07-30 3 views
106

Ich habe ein virtualenv mit der --no-site-packages Option erstellt und viele Bibliotheken installiert. Jetzt möchte ich die --no-site-packages Option zurücksetzen und auch die globalen Pakete verwenden.Die Option `--no-site-packages` mit virtualenv wiederherstellen

Kann ich das tun, ohne die virtualenv neu zu erstellen?

Genauer gesagt:

Ich frage mich, was genau passiert, wenn ein virtualenv mit der --no-site-packages Option zu schaffen, im Gegensatz zu nicht diese Option.

Wenn ich weiß was passiert dann kann ich herausfinden, wie man es rückgängig machen kann.

+0

[eine andere Frage] (http://stackoverflow.com/questions/12433198/) als Duplikat dieser ein markiert wurde, und es erhielt eine Antwort, die auch hier interessant sein könnte. – mariotomo

Antwort

138

Hinzufügen von Versuchen (oder Umbenennen), um die Datei no-global-site-packages.txt in Ihrem Lib Ordner unter Ihrer virtuellen Umgebung zu entfernen.

Wo Venv der Name Ihrer virtuellen Umgebung ist, und python3.4 entspricht je nachdem, was Version von Python beteiligt, zum Beispiel:

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

Und wenn Sie Ihre Meinung ändern und wollen setzen es zurück:

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

Das wird es tun. Die Existenz (oder Nichtexistenz) dieser Datei ist der einzige direkte Effekt des No-Site-Packages-Flags. Virtualenvs angepasster site.py sucht nach dieser Datei, um zu entscheiden, ob globale Site-Packages-Verzeichnisse zu sys.path hinzugefügt werden sollen. –

+0

Brilliant! Das hat es geschafft! Vielen Dank für diese Antwort und danke an Carl Meyer für den zusätzlichen Kommentar. –

+1

das ist 'virtualenv/python2.7/no-global-site-packages.txt' auf meinem ubuntu-Server. – caesarsol

2

Versuchen einen Symlink zwischen /virtualenv_root/lib/ und /path/to/desired/site-packages/

+0

+1 Dies funktioniert auf meinem System (openSUSE Linux 12.3, Python 2.7.3, virtualenv 1.8.4); Ich habe nirgendwo eine 'no-global-site-packages.txt'. –

9

Wenn virtualenvwrapper mit virtualenvs zu verwalten, können Sie die Shell-Funktion toggleglobalsitepackages verwenden, um zwischen den mit und keine Site-Pakete verwenden.

5

Zumindest für Python 3.5.2 gibt es pyvenv.cfg Datei im Stammverzeichnis von virtualenv. Alles, was Sie tun müssen, ist include-system-site-packages Flagge von false zu true ändern:

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