Also habe ich mir verschiedene ähnliche Probleme hier gefragt, aber bis jetzt hat nichts für mich gearbeitet.Import-Modul von Kind-Ordner zum Eltern
Ich habe die folgende Datei Architektur:
\folder
__init__.py
supClass.py
script1.py
\sub
__init__.py
script2.py
So in script2.py Ich versuche supClass zu importieren. Wenn ich gut verstanden habe, was ich in verwandten Themen gelesen habe, muss ich angeben, dass \folder
Teil des PYTHONPATH ist.
So folgenden Beispiele ich las, kam ich mit diesem Stück Code oben:
if __name__ == '__main__' and __package__ is None:
from os import sys, path
sys.path.append(path.dirname(path.dirname(path.abspath(__file__))))
from test_package import supClass
a = supClass()
a.print_sup()
Aber ich folgende Fehlermeldung erhalten:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 685, in runfile
execfile(filename, namespace)
File "C:\Python27\lib\site-packages\spyderlib\widgets\externalshell\sitecustomize.py", line 71, in execfile
exec(compile(scripttext, filename, 'exec'), glob, loc)
File "C:/Donnees/Programmes_Python/Developpement/Tests/test_package/sub/script.py", line 18, in <module>
from test_package import supClass
ImportError: No module named test_package
Ich überprüfte, dass \ Ordner jetzt Teil der ist PYTHONPATH
import sys
print sys.path
in meiner Konsole und es ist in Ordnung. Die Variable __package__
bleibt jedoch auf None festgelegt. Der Fehler, den ich bekomme, scheint zu sagen, dass mein \folder
kein Modul ist. Ich verstehe nicht warum, vielleicht verwechsle ich Dinge zwischen "Paket" und "Modul".
Wie auch immer, wenn jemand eine Idee hat, würde es sehr geschätzt werden!
Der * Eltern * von '\ Ordner' sollte auf 'PYTHONPATH' sein. Wenn Sie 'folder' ==' test_package' annehmen, können Sie 'from test_package import subClass' und' from test_package im import script2' verwenden. Beachten Sie, dass das Ausführen von Skripten aus Unterordnern problematisch ist (aber einfach, wenn Sie eine 'setup.py' Datei schreiben). Sehen Sie meine Antwort hier http://stackoverflow.com/a/41201868/75103 für weitere Informationen. – thebjorn
Das funktioniert! Vielen Dank!Aber können Sie erklären, warum der Eltern von \ Ordner auf PYTHONPATH und nicht nur \ Ordner selbst sein sollte? –
Da 'Ordner' Ihr * Paket * ist und' Ordner importieren' muss Python im Verzeichnis * suchen, das * 'Ordner' enthält. – thebjorn