Zauważyłem, że importowanie modułów w Pythonie jest skomplikowane, więc robię eksperymenty, aby je wyczyścić. Oto moja struktura plików:ImportError: Brak modułu o nazwie pakiet
PythonTest/
package/
__init__.py
test.py
Zawartość __init__.py
:
package = 'Variable package in __init__.py'
from package import test
Zawartość test.py
:
from package import package
print package
Kiedy pozostać poza package
(w PythonTest
) i wykonać python package/test.py
, Otrzymuję:
Traceback (most recent call last):
File "package/test.py", line 1, in <module>
from package import package
ImportError: No module named package
Oczekiwana moc wyjściowa to Variable package in __init__.py
. Co ja robię źle?
Jednak mogę uzyskać oczekiwane wyjście w trybie interaktywnym:
sunqingyaos-MacBook-Air:PythonTest sunqingyao$ python
Python 2.7.10 (default, Oct 23 2015, 19:19:21)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import package
Package in __init__.py
Wygląda na to, że ścieżka wyszukiwania modułów nie jest ustawiona, aby pakiet 'pakiet' mógł zostać znaleziony. – user2357112
@ user2357112 Więc powinienem ustawić 'PYTHONPATH' lub zmodyfikować' sys.path'? Ale dlaczego wszystko jest w porządku w trybie interaktywnym? –
Domyślam się, że uruchamiasz tryb interaktywny z tego samego katalogu co plik, więc ścieżka staje się automatycznie częścią ścieżki wyszukiwania. Spróbuj uruchomić python z zupełnie innego katalogu. – WombatPM