Seite 1 von 1

Eigene Module mit Namen der Systemmodule möglich?

Verfasst: Sonntag 13. Januar 2008, 09:39
von sma
Ist es möglich, in einem eigenen Modul namens "curses" das Original nachzuladen? Oder verbaue ich mir durch unbedacht gewählte eigene Modulnamen grundsätzlich den Zugriff auf die Systemmodule? In diesem Fall würde ich sagen: Willkommen DLL-Hölle... ;)

Stefan

Verfasst: Sonntag 13. Januar 2008, 09:58
von mitsuhiko
Wsa hat das mit DLLs zu tun?

a) curses = __import__('curses')
b) from __future__ import absolute_imports

Re: Eigene Module mit Namen der Systemmodule möglich?

Verfasst: Sonntag 13. Januar 2008, 10:01
von gerold
sma hat geschrieben:In diesem Fall würde ich sagen: Willkommen DLL-Hölle... ;)
Hallo Stefan!

Ich als langjähriger Visual Basic 6 Programmierer kenne die **DLL-Hölle** und noch viel mehr Schweinereien die mit COM zusammen hängen. Je größer dein Programm wird, desto schwieriger wird es damit klar zu kommen...

Aber einfach nur die Module nicht wie Systemmodule zu nennen, ist nicht damit vergleichbar. :wink:

mfg
Gerold
:-)

Verfasst: Sonntag 13. Januar 2008, 10:36
von sma
mitsuhiko, DLL-Hölle ist für mich das Problem, mit verschiedenen Versionen von Bibliotheken (oder im Python-Fall mit Modulen) umzugehen und an möglichen Versionskonflikten zu sterben.

gerold , was weiß ich denn, welche Namen Systemmodule in zukünftigen Python-Versionen haben werden. Wie kann ich da Konflikte ausschließen? Oder welche 3rd Party-Module ich noch später installieren werde und was die da den site-packages hinzufügen werden?

Ein einfaches "__import__('curses')" lädt ebenfalls das eigene Modul. Damit komme ich nicht an das Systemmodul heran - egal ob mit oder ohne absoluten Imports. Erst wenn ich mein Modul als Submodul in ein weiteres Modul schiebe und dort absolute imports benutze, geht es - erfordert aber Python 2.5 und ist IMHO irgendwie unschön.

Stefan

Verfasst: Sonntag 13. Januar 2008, 11:07
von gerold
sma hat geschrieben:gerold , was weiß ich denn, welche Namen Systemmodule in zukünftigen Python-Versionen haben werden. Wie kann ich da Konflikte ausschließen?
Hallo Stefan!

Kein Problem! Denn wenn du das zukünftige Systemmodul in deinem aktuellen Programm nicht brauchst, ist es auch egal, wenn es namentlich überschrieben wird.

mfg
Gerold
:-)

Verfasst: Sonntag 13. Januar 2008, 11:51
von sma
gerold hat geschrieben:Kein Problem! Denn wenn du das zukünftige Systemmodul in deinem aktuellen Programm nicht brauchst, ist es auch egal, wenn es namentlich überschrieben wird.
Stimmt auch wieder...

Stefan

Verfasst: Sonntag 13. Januar 2008, 13:27
von mitsuhiko
sma hat geschrieben:Ein einfaches "__import__('curses')" lädt ebenfalls das eigene Modul. Damit komme ich nicht an das Systemmodul heran - egal ob mit oder ohne absoluten Imports.
Deswegen erstellt man Packages.

Verfasst: Sonntag 13. Januar 2008, 16:19
von Leonidas
gerold hat geschrieben:Kein Problem! Denn wenn du das zukünftige Systemmodul in deinem aktuellen Programm nicht brauchst, ist es auch egal, wenn es namentlich überschrieben wird.
Nicht ganz. RuleDispatch nutzt beispielsweise das Parser-Modul der Stdlib, das ist ganz unpraktisch wenn man sein eigenes Modul ``parser.py`` nennt und sich wundert, warum RuleDispatch bei etwas komplizierterem Dispatching plötzlich crasht, je nachdem in welchem Ordner man den Beispielcode testet.