Eigene Module mit Namen der Systemmodule möglich?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Wsa hat das mit DLLs zu tun?

a) curses = __import__('curses')
b) from __future__ import absolute_imports
TUFKAB – the user formerly known as blackbird
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

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
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

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
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

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.
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten