2017-01-17 7 views
0

ich einen solchen Baum haben:Python Importe funktioniert nicht

package/ 
    subpackage1/ 
     __init__.py 
     impl/ 
      __init__.py 
      moduleA.py 
      moduleA_test.py 
    subpackage2/ 
     __init__.py 
     impl/ 
      __init__.py 
      moduleB.py 

In moduleA.py Ich habe diesen Code:

from subpackage2.impl.moduleB import func_abc 

Modul moduleA_test.py nur moduleA und testet seine Funktionen importiert. Wenn im Terminal, wenn ich im Ordner package bin und python und dann from subpackage1.impl import moduleA laufen, funktioniert es normal.

Aber wenn ich python submodule1/impl/moduleA_test.py (immer noch in package Ordner) laufen, löst der Code einen Fehler auf der Linie des Imports, die ich oben schrieb. Ich bekomme ImportError: No module named subpackage2.impl.moduleB.

Ich habe es auch mit python -m submodule1.impl.moduleA_test.py versucht, aber ohne Glück.

+0

Von welchem ​​Verzeichnis aus führen Sie den Code aus? Wenn es in "Paket" ist, dann denke ich nicht, dass Sie irgendwelche Probleme haben sollten. –

+0

Python sucht standardmäßig im * aktuellen Verzeichnis * - Sie müssen entweder an 'sys.path' anhängen oder die Umgebungsvariable' PYTHONPATH' verwenden. https://docs.python.org/2/tutorial/modules.html 6.1.2 – cdarke

+0

Ja, es ist in 'Paket'. Ich habe die Frage aktualisiert – thecoparyew

Antwort

0

Wenn Sie from subpackage2.impl.moduleB import func_abc schreiben, sucht es nach dem Ordner "subpackage2" im selben Verzeichnis wie Ihr Code, d. H. Package.subpackage1.impl.

Also, wenn Sie die Import-Anweisung schreiben, sucht es nach package.subpack.mplude.implpackage2.impl.moduleB, die nicht vorhanden ist und daher einen Fehler gibt.

Verwandte Themen