2012-07-20 5 views
9

Zur Aktivierung gibt es ein Skript, das eine virtualenv von einem bereits laufenden Python-Interpeter mit execfile('C:/path/to/virtualev/Scripts/activate_this.py', dict(__file__='C:/path/to/virtualev/Scripts/activate_this.py')) aktiviert. Da ich aber immer noch Pakete importieren kann, die nicht aus dem aktuellen Python-Skript in der virtualenv sind, bin ich verwirrt darüber, wie es funktioniert.
Zur Deaktivierung gibt es kein Python-Skript.
Was soll ich tun?Wie aktiviert/deaktiviert man einen virtualenv aus Python-Code?

+0

Ich verstehe nicht, was Sie mit Deaktivierung meinen. wenn du den virtualenv nicht willst .. einfach den ganzen ordner löschen. das ist alles – Surya

+0

wenn wir Programme im Editor schreiben (zB Eclipse) .. da Python Pfad ist standardmäßig nicht der virtualenv .. so können Sie Pakete verwenden, die nicht in virtualenv sind. das ist es – Surya

+1

@Surya Wenn du ein virtualenv deaktivierst, heißt das, dass du zum Haupt-Python-Interpeter zurückkehrst. –

Antwort

6

Von part of the VirtualEnv homepage.

Sie müssen den benutzerdefinierten Python-Interpreter zum Installieren von Bibliotheken verwenden. Aber Bibliotheken zu verwenden, müssen Sie nur sicher sein, dass der Pfad korrekt ist. Ein Skript ist verfügbar, um den Pfad zu korrigieren. Sie können die Umgebungskonfiguration wie:

activate_this = '/path/to/env/bin/activate_this.py' 
execfile(activate_this, dict(__file__=activate_this)) 
+0

Was ist das Äquivalent von Python 3? – Pieter

+2

@Pieter http://stackoverflow.com/questions/436198/what-is-a-alternative-to-execfile-in-python-3-0 – satoru

-3

Das klingt wie eine schlechte Idee. Sie versuchen, die Umgebung Ihres Skripts in diesem Skript zu ändern. Bitte erklären warum?

Können Sie es nicht hierarchisch machen? Verwenden Sie ein Skript, um verschiedene Skripts in verschiedenen virtualenv auszuführen.

+1

Ich entwickle einen Test-Runner wie Tox (nur sehr anders in seiner Herangehensweise. Ich erfinde das Rad nicht neu), der die Testsuite in verschiedenen virtuellen Umgebungen unter Verwendung verschiedener Abhängigkeiten und Python-Interpeters ausführt. Dazu muss ich einen programmatischen Weg haben, um virtualenvs zu aktivieren und zu deaktivieren. –

-4

in der Befehlszeile das Wort geben ‚deaktivieren‘

+1

Aus Python-Code. Nicht von der Befehlszeile. –

0

Wenn Sie ein Programm außerhalb des virtualenv ausgeführt werden soll, nur Ihr System Python ausführbare Datei ausführen (zB /usr/bin/python) statt der in der virtualenv.