Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5260
| From | Peter Otten <__peter__@web.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: Import problem im Eigendem Module Paket |
| Date | 2018-10-05 22:10 +0200 |
| Organization | None |
| Message-ID | <pp8gh3$17qh$1@gioia.aioe.org> (permalink) |
| References | <pp85j1$7e1$1@tota-refugium.de> |
Manfred Gil wrote:
> 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 <module>
> from ..config import daten as da
> SystemError: Parent module '' not loaded, cannot perform relative import
>
> ich habe schon einiges probiert, sowohl ein oder auch zwei Punkte bei der
> Importzeile
> from .config import daten as da
> from ..config import daten as da
>
> Mein Paket sieht wie folgt aus:
> ##### < Ordnerstrucktur > ###
>
> ----my_paket
> __init__.py #(leer)
> config.ini
> ablauf.py
>
> config (Ordner)
> __init__.py #(leer)
> daten.py
>
> daten (Ordner)
> __init__.py #(leer)
> import_test.py
>
> ##### < Ordnerstrucktur > ###
>
> Inhalt der imoprt_test.py
>
> <code>
>
> #!/usr/bin/env python3
> # -*- coding: utf-8 -*-
>
> from ..config import daten as da
>
> print(da.down)
>
> </>
>
> Inhalt der daten.py
>
> <code>
>
> #!/usr/bin/env python3
> # -*- coding: utf-8 -*-
> #
>
> # Downloadlink
> down = 'https://example.com'
>
> </>
>
> 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.
> Andere schreiben wiederrum, das in dieser __init__.py
> man div. Importe machen sollte damit der import in der Modulen klappt.
>
> Kann hier jemand licht in mein Dunkles Kämmerlein bringen.
Wenn du ein Submodul als Skript aufrufst
$ mkdir -p mein_paket/{config,daten}
$ echo 'print("CONFIG-DATEN")' > mein_paket/config/daten.py
$ echo -e 'from ..config import daten\nprint("DATEN-TEST")' > mein_paket/daten/import_test.py
$ python3 mein_paket/daten/import_test.py
Traceback (most recent call last):
File "mein_paket/daten/import_test.py", line 1, in <module>
from ..config import daten
SystemError: Parent module '' not loaded, cannot perform relative import
dann "weiß" das Skript nicht, dass es Teil eines Packages ist.
Um das zu vermeiden schreibst du ein Wrapper-Skript, das das Module
importiert (hier simuliert mit dem Interpreter):
$ python3
Python 3.4.3 (default, Nov 28 2017, 16:41:13)
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mein_paket.daten.import_test
CONFIG-DATEN
DATEN-TEST
>>>
Oder du verwendest die Option -m:
$ python3 -m mein_paket.daten.import_test
CONFIG-DATEN
DATEN-TEST
Im letzten Fall funktioniert auch ein Test
if __name__ == "__main__": ...
wie gewohnt.
PS: Wie gesehen kommt man auch komplett ohne __init__.py aus (nennt sich
"namespace package").
Back to de.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
Import problem im Eigendem Module Paket Manfred Gil <manfred-gil@t-online.de> - 2018-10-05 17:04 +0000
Re: [Python-de] Import problem im Eigendem Module Paket Stefan Schwarzer <sschwarzer@sschwarzer.net> - 2018-10-05 20:49 +0200
Re: Import problem im Eigendem Module Paket Peter Otten <__peter__@web.de> - 2018-10-05 22:10 +0200
Re: Import problem im Eigendem Module Paket Hermann Riemann <nospam.ng@hermann-riemann.de> - 2018-10-06 10:19 +0200
Re: [Python-de] Import problem im Eigendem Module Paket Hartmut Goebel <h.goebel@goebel-consult.de> - 2018-10-07 10:52 +0200
Re: [Python-de] Import problem im Eigendem Module Paket Manfred Gil <manfred-gil@t-online.de> - 2018-10-07 09:20 +0000
csiph-web