[Python-de] Re: import von modules

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


In article <IOEEIPCHIDIHEFEJLJKKIENEDCAA.josef.cihal at irm.at>, Josef Cihal wrote:
> Skript1.py:
>>import win32process
>>DEF_abcd = "TEST"
> 
> Skript2.py:
> from Skript1 import DEF_abcd
> 
> Ich brauche unter UNIX aus einem modul Skript1 nur die Defines zu
> importieren(nihct die win32process library),
> es werden aber gleichzeitig auch die imports in der Importdatei mitgenommen?
> Wie geht es anders?

Hmm.

<Glaskugel>
Du hast wahrscheinlich "from Skript1 import *" gemacht und damit
deinen Namespace zugemüllt (mit den Modulen, die Skript1
verwendet, z. B).

Dazu gibt es verschiedene Lösungen:

1) kein "from ... import *" verwenden, sondern nur
   "from .. import name1, name2, ..."

2) nur ein einfaches "import" verwenden; wenn die Modulnamen zu
   lang sind, gibt es die Möglichkeit, ein Modul "umzubenennen": 
   z. B. "import irrelangername as iln"

3) Du tust am Schluss von Skript1 eine Zeile rein, wie:

    __all__ = ["DEF_abcd"]

    Dann importiert "from Skript1 import *" nur, was in diesem
    Modul in __all__ steht.

    Dazu sollte aber das Modul für diese Art von import
    vorgesehen sein, sprich die Namen sollten so gewählt sein,
    dass Namenskonflikte sehr unwahrscheinlich sind. wxPython z.
    B. hat das wx-Präfix vor allen Bezeichnern, darum ist es
    sicher (und üblich), es mit "from wxPython.wx import *" zu
    verwenden.
</Glaskugel>
-- 
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