Ich kann nicht für das Leben von mir Pythons relativen Einfuhren zu arbeiten. Ich habe ein einfaches Beispiel geschaffen, in dem es nicht funktioniert:Kann jemand Pythons relative Importe erklären?
Die Verzeichnisstruktur ist:
/__init__.py
/start.py
/parent.py
/sub/__init__.py
/sub/relative.py
/start.py
enthält nur: import sub.relative
/sub/relative.py
enthält nur from .. import parent
Alle anderen Dateien sind leer.
Bei der Ausführung der folgenden in der Befehlszeile:
$ cd/
$ python start.py
ich:
Traceback (most recent call last):
File "start.py", line 1, in <module>
import sub.relative
File "/home/cvondrick/sandbox/sub/relative.py", line 1, in <module>
from .. import parent
ValueError: Attempted relative import beyond toplevel package
Ich bin mit Python 2.6. Warum ist das der Fall? Wie kann ich dieses Sandbox-Beispiel verwenden?
Sie verwechseln die Begriffe "Modul" und "Paket". 'start.py' repräsentiert das Modul 'start', 'mod' und 'mod' sind Pakete, 'mod' ist ein Toplevel-Paket. –
Danke, aber das scheint ehrlich gesagt wirklich albern. Für eine so schöne Sprache kann ich nicht glauben, dass die Designer eine solche Einschränkung schaffen würden.Gibt es keinen anderen Weg? – carl
Es ist überhaupt nicht albern. Relative Importe sind ein Verweis auf Geschwistermodule innerhalb eines Pakets. Wenn Sie ein Toplevel-Modul importieren möchten, verwenden Sie absolute Importe. –