Wie kann ich PYTHONPATH nutzen? Wenn ich versuche, ein Skript im Pfad auszuführen, wird die Datei nicht gefunden. Wenn ich in das Verzeichnis mit dem Skript cd, wird das Skript ausgeführt. Was nützt der PYTHONPATH?
$ echo $PYTHONPATH
:/home/randy/lib/python
$ tree -L 1 '/home/randy/lib/python'
/home/randy/lib/python
├── gbmx_html.py
├── gbmx.py
├── __init__.py
├── __pycache__
├── scripts
└── yesno.py
$ python gbmx.py -h
python: can't open file 'gbmx.py': [Errno 2] No such file or directory
$ cd '/home/randy/lib/python'
Nach der CD in das Dateiverzeichnis läuft es ..
$ python gbmx.py -h
usage: gbmx.py [-h] [-b]
Warum kann ich den PYTHONPATH nicht benutzen?
PYTHONPATH
.PYTHONPATH
Antworten:
Ich denke du bist ein bisschen verwirrt. PYTHONPATH legt den Suchpfad für den Import von Python-Modulen fest und nicht für die Ausführung, wie Sie es versuchen.
http://docs.python.org/2/using/cmdline.html#envvar-PYTHONPATH
Was Sie suchen, ist PATH.
Um Ihr Python-Skript jedoch als Programm auszuführen, müssen Sie in der ersten Zeile einen Shebang für Python festlegen . So etwas sollte funktionieren:
Und geben Sie ihm Ausführungsrechte:
Dann sollten Sie einfach
gmbx.py
von überall laufen können .quelle
export PATH=$PATH:/home/etc
Sie verwechseln PATH und PYTHONPATH. Sie müssen dies tun:
PYTHONPATH wird vom Python-Interpreter verwendet, um zu bestimmen, welche Module geladen werden sollen.
PATH wird von der Shell verwendet, um zu bestimmen, welche ausführbaren Dateien ausgeführt werden sollen.
quelle
PYTHONPATH
Betrifft nurimport
Anweisungen, nicht die Suche des Python-Interpreters nach Python-Dateien, die als Argumente angegeben wurden.Das Festlegen
PYTHONPATH
ist keine gute Idee - wie bei allem, was von Umgebungsvariablen abhängt, wird es schwierig, Dinge auf verschiedenen Computern konsistent zu replizieren. Besser ist es, Python-Pakete zu verwenden, die (mit 'pip' oder distutils) in systemabhängigen Pfaden installiert werden können, die Python bereits kennt.Lesen Sie https://the-hitchhikers-guide-to-packaging.readthedocs.org/en/latest/ - 'The Hitchhiker's Guide to Packaging' und auch http://docs.python.org/3/tutorial /modules.html - erklärt PYTHONPATH und Pakete auf einer niedrigeren Ebene.
quelle
PYTHONPATH
. Ich zähle nicht mehr, wie oft ich mich mit einem rudimentären Python-Programm befassen musste, das darauf bestandpip install
, dass ich ein regulärer Benutzer auf einem Host war, nicht nur ohne Root-Zugriff (ich weiß, dass pip eine lokale Installation durchführen kann), sondern auch ohne pip. Hier ist ein Rat an alle, die Python-Software vertreiben: Versuchen Sie zunächst, Ihre eigene Software auf einem Vanilla Linux-Host zu installieren, auf dem Sie keinen Root-Zugriff und nur eine Python-Kerndistribution ohne Pip haben.Ich denke, Sie sind zwischen PATH und PYTHONPATH verwechselt. Alles, was Sie tun müssen, um ein 'Skript' auszuführen, ist, dass das Elternverzeichnis an Ihre PATH-Variable angehängt wird. Sie können dies testen, indem Sie ausführen
Wenn dies
myscripy.py
von benutzerdefinierten Modulen abhängt, müssen deren übergeordnete Verzeichnisse auch zur Variablen PYTHONPATH hinzugefügt werden. Da die Entwickler von Python eindeutig Drogen konsumierten, kann das Testen Ihrer Importe in der Antwort mit den folgenden Angaben leider nicht garantieren, dass Ihr PYTHONPATH für die Verwendung in einem Skript richtig eingestellt ist. Dieser Teil der Python-Programmierung ist magisch und kann beim Stackoverflow nicht angemessen beantwortet werden.quelle
Wenn PYTHONPATH wie in Ihrem Beispiel eingestellt ist, sollten Sie dazu in der Lage sein
-m
Mit dieser Option sucht Python in Pfaden nach Ihrem Modul. Python sucht normalerweise nach Modulen, einschließlich der Elemente, die Sie zu PYTHONPATH hinzugefügt haben. Wenn Sie einen Interpreter wie ausführenpython gmbx.py
, sucht er nach einer bestimmten Datei und PYTHONPATH gilt nicht.quelle