Почему я получаю ошибку импорта для модуля, который у меня есть в проекте. Все пакеты находятся под проектом, все они имеют __init __.py, а другие скрипты не дают такой же ошибки. Версия Python - 3.6. Код был написан в среде Unix.
Вот ошибка импорта, которую я получаю. Я пытаюсь запустить тест здесь.
Ran 1 test in 0.001s
FAILED (errors=1)
Error
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/case.py", line 59, in testPartExecutor
yield
File "/usr/lib/python3.6/unittest/case.py", line 605, in run
testMethod()
File "/usr/lib/python3.6/unittest/loader.py", line 34, in testFailure
raise self._exception
ImportError: Failed to import test module: test_SMSHandler
Traceback (most recent call last):
File "/usr/lib/python3.6/unittest/loader.py", line 153, in loadTestsFromName
module = __import__(module_name)
File "/home/sevvalboylu/server/app/api/test_SMSHandler.py", line 11, in <module>
from middleware.services import Sender
ModuleNotFoundError: No module named 'middleware'
Похоже, у вас отсутствует корневой путь проекта в PYTHONPATH
Из документов (Модули - Путь источника модуля)
Когда импортируется модуль со спамом, интерпретатор сначала ищет встроенный модуль с этим именем. Если он не найден, он ищет файл с именем spam.py в списке каталогов, заданных переменной sys.path. sys.path инициализируется из следующих мест:
- Каталог, содержащий входной скрипт (или текущий каталог, когда не указан файл).
- PYTHONPATH (список имен каталогов с тем же синтаксисом, что и переменная оболочки PATH).
- Значение по умолчанию, зависящее от установки.
Если это решение не сработает для вас, разместите дерево проекта, чтобы упростить поиск проблемы.
python -c "import sys; print(sys.path)"