[Python-de] Re: AW: import von modules

Gerhard Häring gerhard.haering at opus-gmbh.net
Wed Nov 13 15:31:28 EST 2002


In article <IOEEIPCHIDIHEFEJLJKKAENFDCAA.josef.cihal at irm.at>, Josef Cihal wrote:
> weil unter UNIX geben keine win32 Prozese.  es hat mir nur
> interesiert ob eine Moglichkeit gibts nur bestimmte DEFINEs aus
> einem Modul zu importieren...

Schon, nur wird alles, was im importieren Modul auf Modulebene
passiert (incl. dem import der win32-spezifischen Module) beim Import
trotzdem passieren.

Eine übliche Strategie ist es, plattformspezifisches in eigene Module
zu kapseln. Ansonsten artet das oft in #ifdef-Hell aus.

Sagen wir mal, du möchstest ein Modul filesystemtools machen, das
unter allen Betriebssystemen funktioniert, aber unter Windows ein paar
Zusatzfunktionalitäten hat, welche die win32-Extensions brauchen, du
könntest das dann so realisieren:

[win32fs.py]
import win32api
...

[filesystemtools.py]
try:
    from win32fs import *
except ImportError:
    pass

... Funktionen, die auf allen Plattformen funktionieren ...



Hier noch ein abschreckendes realistisches Beispiel für Cross-Platform
(und Cross-Implementation Python) mit #ifdef-Hell (argh!):

[calendartools.py]
import os

JYTHON = (os.name == "java")

if JYTHON:
    # zxDateTime importieren und so zurechtbiegen, dass es kompatibler mit
    # mxDateTime ist.
    from com.ziclix.python.datetime import DateTime, DateTimeDelta
    DateTimeType = DateTime

    # [...]
    def DateTimeFrom(s): [...]
    def TimeFrom(s): [...]
    class Time(DateTimeDelta):
        def __init__(self, hours, minutes, seconds):
            DateTimeDelta.__init__(self, 0, hours, minutes, seconds)
else:
    from mx.DateTime import DateTime, DateTimeFrom, DateTimeDelta, \
            DateTimeType, Time, TimeFrom, DateFrom


> -----Ursprungliche Nachricht-----
> [Snip b0rken Outhouse quoting]
-- 
Gerhard Häring
OPUS GmbH München
Tel.: +49 89 - 889 49 7 - 32
http://www.opus-gmbh.net/






More information about the Python-de mailing list