[Python-de] Frage zur Importierung und Zugriff auf eine Funktion aus einer übergeordneten Datei

Christopher Arndt chris.arndt at web.de
Mo Apr 5 23:48:41 UTC 2010


Ulf Rompe schrieb:
> Am 05.04.2010 15:06, schrieb Christopher Arndt:
>>> sys.path[0] enthält immer das Verzeichnis des aktuellen Moduls.
>> Das kann ich nicht bestätigen. M.E. nach enthält sys.path[0]
>> normalerweise einen leeren String, der als das aktuelle Verzeichnis
>> interpretiert wird1.
> 
> Das wäre definitiv defekt. Tatsächlich verwende ich das beschriebene
> Verfahren seit Jahren in einem Projekt, das rund um die Uhr auf
> verschiedenen Unix- und Windows-Plattformen eingesetzt wird. Es gab noch
> nie Probleme mit den Imports. Das Projekt startete mit Python2.4 und ist
> mittlerweile bei Python2.6 angekommen.
> 
> Weiterhin habe ich gerade eine kleine Reihe von Test-Modulen aufgesetzt,
> die sich kreuz und quer importieren und jeweils nur eine Debug-Meldung
> mit sys.path[0] ausgeben. Es kam überall der korrekte Pfad heraus.
> 
>> Es sei denn, irgendein anderes Modul hat vorher sys.path manipuliert.
> 
> Definitiv nicht.

Aus der standard library reference:

"As initialized upon program startup, the first item of this list,
path[0], is the directory containing the script that was used to invoke
the Python interpreter. If the script directory is not available (e.g.
if the interpreter is invoked interactively or if the script is read
from standard input), path[0] is the empty string, which directs Python
to search modules in the current directory first. Notice that the script
directory is inserted before the entries inserted as a result of PYTHONPATH.

A program is free to modify this list for its own purposes."

Ich hatte also auch nicht ganz recht, aber so wie du es beschreibst ist
es nicht Standard und man sollte sich nicht darauf verlassen.

Chris



Mehr Informationen über die Mailingliste python-de