[Python-de] Modul von anderswo laden?

Matthias Urlichs smurf at noris.de
Fri Mar 8 06:05:09 EST 2002


Hallo,

ich habe hier ein Modul, nennen wir es foo.bar. Wenn ich es verwenden 
will, sag ich folglich "import foo.bar". So weit so gut.

Dummerweise ist das Ding in meiner Entwicklungsumgebung ganz 
woanders, d.h. die Datei heisst "libtest/bar.py". Damit findet python 
natürlich nix. Die Frage lautet nun: kann ich dem import-Statement 
das Ding trotzdem unterschieben, ohne die Datei woandershin zu 
kopieren oder mit Symlinks rumzuspielen?


Zweite Frage: Ich bin gerade dabei, Dinge zu importieren, die sich 
als nicht-Module entpuppen...

foo/__init__.py:
import foo._bar
bar=_bar.magie()

foo/_bar.py:
def magie():
     return "Dies ist magisch."

foo/bar.py:
import sys
import foo
sys.modules["foo.bar"]=foo.bar

... und schon ist, nach einem Import von foo.bar, der Wert ebendieses 
"foo.bar" ein String. Das funktioniert soweit perfekt, hat nur den 
kleinen Nachteil, dass auch ein nackter "import foo" immer auch 
foo._bar lädt und magie() aufruft, obwohl ich das möglicherweise 
diesmal gar nicht brauche.

Die Frage lautet also: Gibt es eine Möglichkeit, in einem Modul 
festzustellen, welche Variablen von ihm verlangt werden? 
(Killerargument für ein solches Feature: mit Perl geht es. ;-)
-- 
Matthias Urlichs



More information about the Python-de mailing list