it-swarm.com.de

Wie füge ich einen Pfad zu PYTHONPATH in virtualenv hinzu?

Ich versuche, der Umgebungsvariablen PYTHONPATH einen Pfad hinzuzufügen, der nur in einer bestimmten virtualenv-Umgebung sichtbar ist. 

Ich habe SET PYTHONPATH=... unter einer Eingabeaufforderung von virtualenv ausprobiert, aber dies legt die Variable für die gesamte Umgebung fest.

Wie kann ich das erreichen?

84
Flavien

In der Regel können Sie vermeiden, dass Sie mit PYTHONPATH irgendetwas tun müssen, indem Sie mit .pth-Dateien verwenden. Fügen Sie einfach eine Datei mit der Erweiterung .pth (jeder Basisname funktioniert) in den Site-Packages-Ordner Ihres virtualenv ein, z. lib\python2.7\site-packages, mit dem absoluten Pfad zu dem Verzeichnis, das Ihr Paket als einzigen Inhalt enthält.

137
Dougal

Wenn Sie virtualenv verwenden, sollten Sie wahrscheinlich auch virtualenvwrapper verwenden. In diesem Fall können Sie den Befehl add2virtualenv verwenden, um dem Python-Pfad für die aktuelle virtualenv Pfade hinzuzufügen:

add2virtualenv directory1 directory2 … 

89
crimeminister

Sie können auch versuchen, den Symlink auf eine Ihrer Virtualenv zu setzen.

zB . 1) Aktivieren Sie Ihre Virtualenv 2) Führen Sie Python aus 3) Importieren Sie sys und überprüfen Sie sys.path 4). Dort finden Sie den Python-Suchpfad. Wählen Sie eines davon aus (z. B. Site-Pakete) 5) Gehen Sie dorthin und erstellen Sie einen Symlink zu Ihrem Paket wie folgt: .__ -importieren

Auf diese Weise sollten Sie in der Lage sein, sie zu importieren, ohne dass Sie Ihre virtualenv aktivieren müssen. Versuchen Sie es einfach: Pfad-zu-Ihrem-Virtualenv-Ordner/bin/python Und importieren Sie Ihr Paket.

4
Slavko-t
import sys
import os

print(str(sys.path))

dir_path = os.path.dirname(os.path.realpath(__file__))
print("current working dir: %s" dir_path)

sys.path.insert(0, dir_path)

Ich empfehle dringend, dass Sie virtualenv und virtualenvwrapper verwenden, um einen unübersichtlichen Pfad zu vermeiden

0
Rubber Duck

Wenn Sie einen virtualenvwrapper verwenden, 

$ cd to the parent folder
$ add2virtualenv  folder_to_add

konsole wird angezeigt 

Warning: Converting "folder_to_add" to "/absoutle/path/to/folder_to_add"

Das ist es und du solltest gut sein

0
Aneesh Panoli