Konnte pygtk aufgrund der PATH-Reihenfolge nicht finden? Wo ist der Standardpfad PATH definiert?

384
Mike Dannyboy

Ich habe ein Programm installiert, das pygtk importiert hat. In meiner Umgebung hat es gut funktioniert, aber eine "leere" Umgebung (zB ein neuer Benutzer) würde nicht funktionieren.

Ich stellte fest, dass es an PFAD lag. Die Auflösung war jedoch verwirrend.

Mein PATH wurde so eingestellt:

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 

Default wurde so gesetzt:

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. Konkret habe ich /usr/binoben gesetzt /usr/local/bin.

Ohne diese winzige Änderung tritt das Programm mit folgenden Fehlern auf:

 import pygtk ImportError: No module named pygtk 

Ich dachte nicht, dass die PATH-Bestellung so wichtig war, aber anscheinend ist es so. Warum ist das System so wichtig? Findet es das Programm und versucht es auszuführen, bevor es pygtk gefunden hat?

1

1 Antwort auf die Frage

1
simpleuser

Die Reihenfolge des PFADs kann ziemlich wichtig sein: Wenn Sie ein Programm ausführen, sucht die Shell in jeder der Komponenten Ihres Pfads nach dem Namen des Programms, beginnend mit der ersten. Wenn zwei Programme mit demselben Namen in zwei der Pfade vorhanden sind (aus welchem ​​Grund auch immer), wird das Programm verwendet, das zuerst gefunden wird. In Ihrem Fall scheinen Sie tatsächlich zwei Kopien eines Programms zu haben, obwohl ich nicht weiß, ob es sich um Python handelt oder um ein anderes Programm, das Python mitteilt, wo Komponenten gefunden werden sollen usw.

Ah, es hört auf * zu suchen, sobald ein Treffer gefunden wurde. Aus irgendeinem Grund denke ich, es würde weitergehen, aber das ist im Nachhinein ein bisschen dumm. Ich weiß nicht, warum ich dachte, es wäre so. Vielen Dank! Mike Dannyboy vor 5 Jahren 0