
Ich habe ein Programm installiert, das pygtk importiert. In meiner Umgebung funktionierte es einwandfrei, aber in einer „leeren“ Umgebung (z. B. einem neuen Benutzer) funktionierte es nicht.
Ich bin zu dem Schluss gekommen, dass es an PATH lag. Die Auflösung war allerdings verwirrend.
Mein PATH wurde folgendermaßen festgelegt:
PATH=/usr/lib/qt-3.3/bin
PATH=$PATH:/bin
PATH=$PATH:/usr/bin
PATH=$PATH:/usr/local/bin #******
PATH=$PATH:/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/usr/local/sbin
PATH=$PATH:/home/td69386/bin
Der Standard wurde wie folgt festgelegt:
PATH=/usr/lib/qt-3.3/bin
PATH=$PATH:/usr/local/bin #*****
PATH=$PATH:/bin
PATH=$PATH:/usr/bin
PATH=$PATH:/usr/local/sbin
PATH=$PATH:/usr/sbin
PATH=$PATH:/sbin
PATH=$PATH:/home/td69386/bin
Der einzige Unterschied ist die Reihenfolge. Genauer gesagt habe ich /usr/bin
oben Folgendes angegeben /usr/local/bin
.
Ohne diese kleine Änderung treten folgende Programmfehler auf:
import pygtk
ImportError: No module named pygtk
Ich dachte nicht, dass die Pfadreihenfolge so wichtig ist, aber anscheinend ist sie es. Warum sollte das System sich so sehr darum kümmern? Sucht und versucht es, das Programm auszuführen, bevor es gefunden wird? pygtk?
Antwort1
Die Reihenfolge des Pfads kann sehr wichtig sein: Wenn Sie ein Programm ausführen, sucht die Shell in jeder Komponente Ihres Pfads nach dem Programmnamen, beginnend mit der ersten. Wenn in zwei der Pfade zwei Programme mit demselben Namen vorhanden sind (aus welchem Grund auch immer), wird das Programm verwendet, das zuerst gefunden wird. In Ihrem Fall scheint es, dass Sie tatsächlich zwei Kopien eines Programms haben, obwohl ich nicht weiß, ob es Python ist oder etwas anderes wie ein Programm, das Python mitteilt, wo Komponenten zu finden sind usw.