2012-05-24 8 views
70

Ich versuche, einen Pfad zu der PYTHONPATH Umgebungsvariable hinzuzufügen, die nur aus einer bestimmten virtualenv-Umgebung sichtbar wäre.Wie füge ich einen Pfad zu PYTHONPATH in virtualenv

Ich versuchte SET PYTHONPATH=... unter einer virtualenv Eingabeaufforderung, aber das setzt die Variable für die gesamte Umgebung.

Wie erreiche ich das?

Antwort

123

Sie können in der Regel vermeiden, etwas mit PYTHONPATH von using .pth files zu tun. Legen Sie einfach eine Datei mit der Erweiterung .pth (beliebiger Basisname funktioniert) in den Site-Packages-Ordner Ihres virtualenv, z. lib\python2.7\site-packages, mit dem absoluten Pfad zu dem Verzeichnis, das Ihr Paket als einzigen Inhalt enthält.

80

Wenn Sie virtualenv verwenden, sollten Sie wahrscheinlich auch virtualenvwrapper verwenden, in dem Fall, dass Sie den add2virtualenv Befehl verwenden können Pfade zum Python-Pfad für den aktuellen virtualenv hinzuzufügen:

add2virtualenv directory1 directory2 …

+0

wo kommt das Dienstprogramm kommen? Ich habe versucht, pip installieren virtualenvwrapper und das hat es nicht für mich. – AlanObject

+0

https://bitbucket.org/dhellmann/virtualenvwrapper – crimeminister

+2

Wie wäre es mit dem Entfernen von virtualenv? – silverdagger

4

Sie kann auch versuchen, symlink auf einen deiner virtualenv zu setzen.

z. 1) aktiviere dein virtualenv 2) starte python 3) importiere sys und überprüfe sys.path 4) du wirst den Python-Suchpfad dort finden. Wählen Sie eine davon (z. B. Site-Pakete) 5) gehen Sie dorthin und erstellen Symlink zu Ihrem Paket wie: ln -s Pfad zu Ihrem Paket-Name-mit-denen-Sie-werden-importieren

Auf diese Weise sollten Sie in der Lage sein, es auch ohne Aktivierung Ihres virtualenv zu importieren. Probieren Sie einfach: pfad-zu-ihr-virtualenv-ordner/bin/python und importieren sie ihr paket.

+0

Ich vermute, das wurde für die Verwendung von Symlinks anstelle von PTH-Dateien abgelehnt. Es funktionierte aber für mich, also, egal. –

0

In Python 3.6.4

import sys 
import os 

print(str(sys.path)) 

dir_path = os.path.dirname(os.path.realpath(__file__)) 
print(f"current working dir: {dir_path}") 

sys.path.insert(0, dir_path) 

empfehle ich Ihnen sehr virtualenv und virtualenvwrapper verwenden Pfad zu vermeiden unübersichtlich

Verwandte Themen