У меня есть каталог, структурированный следующим образом:
/my_project
/my_module
__init__.py
db_engine.py
db_mapped_classes.py
manifest_parser.py
manifest_parser_test.py
Операторы импорта в manifest_parser_test.py
выглядят следующим образом:
from manifest_parser import parse_manifest
Самому модулю manifest_parser.py
необходимо импортировать некоторые классы в пакете для работы:
from db_mapped_classes import Video, Representation
Когда я запускаю python manifest_parser_test.py
из /my_project
в консоли, у интерпретатора нет проблем с импортом чего-либо. Когда я запускаю nosetests my_module
из того же каталога, я получаю следующую ошибку:
> nosetests my_module
Traceback (most recent call last):
(...)
content_db\manifest_parser_test.py line 1 in <module>
from manifest_parser import parse_manifest
ModuleNotFoundError: No module named 'manifest_parser'
Если я изменю импорт в manifest_parser_test.py
на следующее:
from my_module.manifest_parser import parse_manifest
Nosetests дает мне следующее исключение:
> nosetests my_module
Traceback (most recent call last):
(...)
content_db\manifest_parser_test.py line 1 in <module>
from content_db.manifest_parser import parse_manifest
content_db\manifest_parser.py line 4 in <module>
from db_mapped_classes import Video, Representation
ModuleNotFoundError: No module named 'db_mapped_classes'
Кроме того, теперь интерпретатор не может импортировать анализатор манифеста при прямом запуске:
> python my_module/manifest_parser_test.py
Traceback (most recent call last):
File "content_db/manifest_parser_test.py", line 1, in <module>
from content_db.manifest_parser import parse_manifest
ModuleNotFoundError: No module named 'content_db'
Как мне структурировать мои python файлы по порядку упаковать мой модуль, но все же разрешить запуск тестов носа, как положено?