Python сбой импорта локального пакета - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь создать проект python3 с помощью модульных тестов. Я настроил структуру папок так, чтобы исходные файлы и тестовые файлы находились на одном уровне в структуре папок. В папке с исходным кодом я добавил файл init .py, чтобы я мог импортировать его в тестовые классы. У меня получилась следующая установка.

root_folder
|--source_code
|  |-- __init__.py
|  |-- submodule1
|  |   -files
|  |-- submodule2
|      -files
|--test_folder
|  |--unit
|   --integration

Чтобы импортировать модуль source_code в тестовые сценарии, я использую from source_code import submodule1., и я запускаю тесты из корневая_папка . Однако когда я запускаю тесты с текущим рабочим каталогом, настроенным как root_folder , тестовые сценарии не могут импортировать модуль source_code . Эта проблема возникает только тогда, когда я использую стандартный python3 REPL. Если я таким же образом запустил i python3 REPL из проекта Jupyter, импорт будет работать отлично.

Хотя это не нарушает условия сделки, я бы хотел, чтобы проект не зависел от другого. другой REPL из-за неправильной настройки проекта.

Есть какие-нибудь подсказки о том, что я делаю неправильно?

Изменить:

root_folder
|--source_code
|  |-- __init__.py
|  |-- submodule1
|  |   -files
|  |-- submodule2
|      -files
|--test_folder
|  |-- __init__.py
|  |--unit
|   --integration

Я также изменил структуру, чтобы иметь init файл в тестовой папке, но проблема не устранена. Кажется, что если я запускаю python3 IDLE, я могу обнаружить оба пакета, имея в качестве пути путь к каталогу root, поэтому на данный момент я не уверен, почему различное поведение между двумя режимами выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...