Я создал проект с точным деревом ниже.
/ project
/ logic
- app.py
- utils.py
- exceptions.py
/ tests
- tests.py
- README
- requirements.txt
Код предназначен для запуска из командной строки. app.py
содержит main logi c.
В app.py
, я импортирую утилиты так: from utils import validate_args
Так что, когда я запускаю python app.py
, все работает, как и ожидалось.
НО, когда я запускаю nosetests
, он сразу завершается неудачно, ссылаясь на импорт utils
в app.py
в качестве причины:
File ".../project/app.py", line 4, in <module>
ModuleNotFoundError: No module named 'utils'
Это может исправить ошибку, изменив импорт на .utils
, но команда командной строки завершится неудачно:
ModuleNotFoundError: No module named '__main__.utils'; '__main__' is not a package
Я попытался добавить файлы __init__.py
в каталоги /project
, /logic
и /tests
в разных комбинациях безрезультатно - но честно говоря я просто догадываюсь. Чего мне не хватает в логи импорта c?