Path: csiph.com!fu-berlin.de!uni-berlin.de!not-for-mail From: Stefan Schwarzer Newsgroups: de.comp.lang.python Subject: Re: [Python-de] Import problem im Eigendem Module Paket Date: Fri, 5 Oct 2018 20:49:31 +0200 Lines: 66 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de c7YyNXYzVGquxQJsPhf2FAfIjEqQ1a+Y8Uy1FQF/qMCg== Return-Path: X-Original-To: python-de@python.org Delivered-To: python-de@mail.python.org Openpgp: preference=signencrypt Autocrypt: addr=sschwarzer@sschwarzer.net; prefer-encrypt=mutual; keydata= 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 WdtUokwYRxk= User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.24) Gecko/20100411 Thunderbird/2.0.0.24 Mnenhy/0.7.6.666 In-Reply-To: Content-Language: de-DE X-Provags-ID: V03:K1:zgqLAd/ygFXO2R7ZRWNN9TTu6qEc+p5fWO775diekZQpQMHdYq+ 4hnqFJj8qmPq4KM9cIlhd1qhWltG7vT5DD+avMjWDSej+JPDTFA751B1kmkvTM7g3YkzZsE UV0LDe/ZPUZvxs1p9/KPCxQu+KZ/YODWS8X2AJDcg9fxbbNExCVrBIRrSBqVeQWZjlRg+ag 9cyPBkw2DscXJBNvIIisQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:m6tBjRB92cg=:1vTl5GIWDdtHAgbqR8sbaC dJJTsGFzx+xsyFpGMTRth4v7NqW/0psJl0jc45BBmNR37fROYfXyoS0IYcO7BCtHhL/NcWpce LwtXwFhnzNH7UOL+ILBkheOBolJgTJXicK4VclZGK65x/bT0UC5oZOgv5wHqreUP2BQ+au/1O n4FIoywYsLWKpu6tA1l+nIiBwrtEhKItCmUhDltLEHgV82GiGxidrUMreSQ+x5ftY/a7BE+jZ tcZXXGom3B/qeCM3pBnkHWwyKwaWPgwEACtv6NCtODDUB3lcpJyl91HAUOq7YN1f7mfSU4Itx EmH9cDEq5z0E6erkyjrCP6DoJdbAMHOP5js8hht8vJZBCoeRUbdq2mCpDuoOWyfOIwfNsE3tE uMfOxU6xZ/QG9hZ0sBs8FUde0F/c7hZaWogQRLkn7s8x9sU6QFbEvT68uvMwazGzN3lRoYUuK ADvCGe5lYEWCOs4gDPrRwxzzfrNxvjO7UY9cqR9o+UarYew2Pc44mgbm11TToGnFvHdx/2smb h/rqTxR3Kxs89Rqe0mqkqYMKbkI0d7vTV+SmrkbOmLpYQRZ6IW2dFcFHSjO0xlkyTwNefvBiB nH5spULCpVup5X5I9m0zIWcYSwN/GyEeMKIYo1o4qzzljZ1Tx9SqeM7pqClpwVKp7CVa8XilF W5wokY+9f92ieRzUN14gtvXp9LGqOXOGnj26IicPxAt+SeqsFl+lkYSJpvkA5hlip2xg5jahJ ND1ork8dSgBjBQOV X-BeenThere: python-de@python.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Die Deutsche Python Mailingliste List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Mailman-Original-Message-ID: X-Mailman-Original-References: Xref: csiph.com de.comp.lang.python:5259 On 05/10/2018 19.04, Manfred Gil wrote: > ich Arbeite gerade mit einem selbsterstellten Module. > > Mein Problem ist das ich kein Module aus einem Übergeordnetem > Ordner importieren kann. > > Ich bekomme stets die Fehlermeldung: > > File "import_test.py", line 4, in > from ..config import daten as da > SystemError: Parent module '' not loaded, cannot perform relative import Ich verstehe das so, dass du erst `my_paket` (der Parent von `config`) `import`ieren musst. > Ich hab gelesen das man die __init__.py eigendlich leer lassen sollte, > jedoch schreiben andere das mit einem > __all__ = ['auflistung der Ordner'] > es gehen sollte, was bei mir noch nicht der fall ist. Die Definition von `__all__` bestimmt nur, was bei einem `from module import *` in den Namensraum des importierenden Moduls importiert werden soll. > Andere schreiben wiederrum, das in dieser __init__.py > man div. Importe machen sollte damit der import in der Modulen klappt. Kommt drauf an, was man unter "klappen" versteht. ;-) Nimm an, du hast folgende Paket-Struktur: a b c sowie dein Modul `my_module`. Wenn in `a/__init__.py` keine Imports stehen, musst du in `my_module` import a.b schreiben, wenn du auf Attribute in `a.b` zugreifen willst. Wenn in `a/__init__.py` der Import import a.b steht, reicht in Modul `my_module` schon der Import import a um auf `a.b` und seine Attribute zugreifen zu können, weil `a.b` bereits mit dem Import von `a` importiert wurde. Das passiert nicht implizit ohne `import`-Anweisungen. Ich würde allerdings eher explizite Imports in `my_module` verlangen, das erscheint mir sauberer. Also nicht in `a/__init__.py` Imports irgendwelcher "Unter-Module" vornehmen, sondern den Nutzer deiner Bibliothek alle nötigen Module explizit importieren lassen. Ich hoffe, ich konnte etwas helfen. Viele Grüße Stefan