/ / Python: Importieren eines Unterpaketmoduls aus dem Unterpaket und dem Hauptpaket - python, import

Python: Importieren eines Unterpaketmoduls aus dem Unterpaket und dem Hauptpaket - python, import

Hier geht es mit meiner allerersten Stackoverflow-Frage. Ich habe nach einer Antwort gesucht, konnte aber keine klare Antwort finden. Hier ist die Situation. Ich habe eine Struktur wie folgt:

myapp
package/
__init.py__
main.py
mod1.py
mod2.py

Jetzt importiere ich in diesem Szenario von main.py mod1.py, das auch von mod2.py importiert werden muss. Alles funktioniert gut, meine Importe sehen so aus:

main.py:

from mod1 import Class1

mod2.py:

from mod1 import Class1

Ich muss jedoch meine main.py in die Hauptordnerstruktur verschieben:

myapp
main.py
package/
__init.py__
mod1.py
mod2.py

Und nun passiert natürlich, dass ich die Art ändern muss, wie ich mod1 in main.py importiere:

from package.mod1 import Class1

Es ist jedoch auch so, dass ich, um kein "ImportError: Kein Modul namens" mod1 "" zu erhalten, dieselbe Art von Änderung in mod2.py vorgenommen habe:

from package.mod1 import Class1

Warum das? mod2 befindet sich im selben Ordner / Pakcage wie mod1, also warum sollte ich nach dem Ändern von main.py meinen Import in mod2 ändern?

Antworten:

2 für die Antwort № 1

Der Grund dafür ist, dass Python nach Modulen und Paketen Ausschau hält, wenn Sie ein Python-Skript ausführen __main__ Skript.

Wenn du rennst python main.pyPython fügt das übergeordnete Verzeichnis hinzu main.py zum Pythonpfad, dh Pakete und Module innerhalb des Verzeichnisses werden importiert. Wenn Sie main.py verschoben haben, haben Sie das Verzeichnis geändert, das zum Pythonpfad hinzugefügt wurde.

Im Allgemeinen möchten Sie sich nicht auf diesen Mechanismus verlassen, um Ihre Module zu importieren, da Sie Ihr Skript und Ihr Paket und Module nicht verschieben können nur importierbar, wenn dieses Hauptscript ausgeführt wird. Was Sie tun sollten, ist sicherzustellen, dass Sie package wird in ein Verzeichnis installiert, das sich bereits im Pythonpfad befindet. Es gibt mehrere Möglichkeiten, dies zu tun, aber am häufigsten ist das Erstellen eines setup.py Skript und eigentlich Installieren Sie Ihr Python-Paket für die Python-Installation auf Ihrem Computer.