[Python-de] Frage zur Importierung und Zugriff auf eine Funktion aus einer übergeordneten Datei
Ulf Rompe
python-de at rompe.org
Di Apr 6 14:02:19 CEST 2010
Am 06.04.2010 01:48, schrieb Christopher Arndt:
> 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.
In allen Situationen, in denen man den Suchpfad relativ zur aktuellen
Datei erweitern muss oder auch nur möchte, kann man sich auch auf ein
korrekt gesetztes sys.path[0] verlassen.
Wenn man interaktiv im Interpreter arbeitet oder Scripts auf stdin an
ihn übergibt, kann man ja dieses Bedürfnis auch gar nicht haben. In
genau diesen Fällen versagt übrigens auch os.path.dirname(__file__) ganz
kläglich, weil __file__ dann nicht definiert ist. Man könnte nun
versuchen, das abzufangen und irgendetwas anderes zu machen, aber man
müsste schon definieren, was denn überhaupt eine sinnvolle Aktion wäre.
Möglicherweise wäre sinnvoll, dann das dem aktuellen Arbeitsverzeichnis
übergeordnete Verzeichnis zu wählen. Genau das macht meine Variante
zufällig, aber ob es tatsächlich eine sinnvolle Anwendung dafür gibt,
ist eher fraglich.
Wie gesagt: Wenn man es braucht, funktioniert es auch. Wo es nicht
funktioniert, braucht man es auch nicht.
Einziger Wermutstropfen dabei: Pylint braucht etwas Schützenhilfe, um
diese Pfaderweiterung zu verfolgen.
[x] ulf
--
Rome did not create a great empire by having meetings,
they did it by killing all those who opposed them.
Mehr Informationen über die Mailingliste python-de