Zunächst einmal: Es tut mir leid, ich weiß, es gab viele Fragen über relative Importe, aber ich habe einfach keine Lösung gefunden. Wenn möglich, würde Ich mag die folgende Verzeichnisstruktur verwenden:Python Verpackung für relative Importe
myClass/
__init__.py
test/
demo.py
benchmark.py
specs.py
src/
__init__.py
myClass.py
Nun meine Fragen sind:
Wie richtig die Testdateien aus dem Paket myClass.py importieren?
Wie würden Sie das Paket von außen importieren, vorausgesetzt, Sie nehmen myClass als Submodul in libs/myClass oder include/myClass?
Bis jetzt konnte ich keine elegante Lösung dafür finden. Von dem, was ich Guido's Decision verstehen sollte es möglich sein from ..src import myClass
zu tun, aber dieser Fehler:
ValueError: Attempted relative import in non-package
Welche, da sie als Pakete nicht behandeln myClass aussieht. Reading the docs:
The __init__.py files are required to make Python treat the directories as containing packages;
Es scheint, ich etwas fehle, das in dem die Skripte des Pakets spezifiziert sind, sollte ich .pth benutzen?
@Brent Newey, ja Sie haben Recht, relative Importe scheint ein laufendes Thema zu sein und nachdem ich einige Antworten gelesen hatte, fühlte ich immer noch den Drang, meine Situation zu beschreiben. Nach dem Zeigen dieses q empfahlen einige Leute auf dem #python IRC-Kanal eine flache Verzeichnisstruktur: "Viele Leute widerstehen der Art, wie Python Verzeichnisse und Dateien für semantische Namespace-Informationen verwenden will. Es ist am besten, nachzugeben und zu tun was Python will. " http://jcalderone.livejournal.com/39794.html – eerne
Könnte jemand einen Link zu einigen realen Paketen mit einem exemplarischen Verzeichnislayout bereitstellen oder einigen Konventionen folgen? (Idealerweise auf github) – eerne
Gibt es '___ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _? 'ValueError: Versuchter relativer Import in Nicht-Paket' könnte damit zusammenhängen. – jfs