У меня есть очень обычный репозиторий исходного кода, вроде следующей структуры:
aProject
|-----> __init__.py
|-----> src
| |-----> __init__.py
| |-----> file1.py
| |-----> file2.py
|
|-----> test
|-----> __init__.py
|-----> test_file1.py
|-----> augmentationFile.py
Уникальный для моего случая, test_file1.py использует augmentationFile.py, который ссылается на каталог src, а оператор from src import *
внутри augmentationFile.py успешно находит модули.
Я могу запустить модуль unittest из основного каталога aProject, и sys.path внутри augmentationFile.py отображается в качестве его первого аргумента. Это позволяет python находить относительные каталоги src.
Однако, когда я запускаю из каталога aProject, на этот раз используя python test/augmentationFile.py
, python устанавливает sys.path[0] для тестовой папки и не может разрешить оператор from src import *
и жалуется.
Как мне сообщить интерпретатору python (я могу ошибиться, найдя соответствующий флаг, просматривая python 3 документ в командной строке), чтобы правильно определить каталоги? Один из вариантов, который приходит мне на ум, — изменить оператор импорта augmentationFile.py на оператор if, проверяющий sys.path и решающий, следует ли импортировать из ..src или src. Меня пугает необходимость изменять исходный код в каждой подобной ситуации. Поэтому я спрашиваю, можно ли и как сообщить интерпретатору разрешить относительные пути с учетом текущего рабочего каталога? Спасибо,