2017-02-01 13 views
0

Ich habe folgende Programmstruktur:Import innerhalb Importe

main.py 
__init__.py 
modules----------module1.py 
       module2.py 
       __init__.py 

In main.py I module1.py importieren. In module1.py importiere ich module2.py.

Wenn ich main.py starte, heißt es "Fehler in module1.py, dort ist kein module2.py".

Allerdings, wenn ich module1.py auf eigene Faust ausführen, funktioniert es richtig. Ich verstehe dieses Verhalten nicht oder wie ich es beheben kann.

Hinweis: Ich verwende "from module1 import func" ohne die .py.

Edit: Insbesondere könnte jemand erklären, was hinter den Kulissen anders passiert, wenn ich main.py laufen lasse und nicht im Vergleich versus wenn ich module1 laufe und importiere.

+0

Sie schrieb 'aus dem Modul Import func', wo Modul definiert ist .. I don‘ t sehen Sie es in Ihrer Hierarchie. –

+0

Entschuldigung, habe es klar gemacht – Tom

Antwort

0

Sie müssen den Ordner, der main.py enthält, zu $ ​​PYTHONPATH hinzufügen.

Sagen Sie bitte die folgende Ordnerstruktur Projekt/

. main.py/

-------- init Py

------- Module/

------------ ------ module1.py

Dann in Ihrem Terminal laufen Export "$ PYTHONPATH = path_to_project: $ PYTHONPATH"

+0

Ist es möglich, dies in einer allgemeineren Weise in das eigentliche Programm zu tun? Ich brauche mein Projekt, um zwischen Computern übertragen zu werden, das heißt, ich möchte es in ein beliebiges Verzeichnis verschieben und es ausführen können. – Tom

+1

ja ist es ... ein Paket machen. – Glostas

+0

Ich dachte, dass das Hinzufügen von __init__.py genug war, damit es wie ein Paket funktioniert und das PYTHONPATH-Geschäft nicht benötigt wird. – Tom