Указание интерпретатору Python выбрать текущий путь для разрешения относительных каталогов

У меня есть очень обычный репозиторий исходного кода, вроде следующей структуры:

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. Меня пугает необходимость изменять исходный код в каждой подобной ситуации. Поэтому я спрашиваю, можно ли и как сообщить интерпретатору разрешить относительные пути с учетом текущего рабочего каталога? Спасибо,


person b.g.    schedule 09.09.2020    source источник
comment
Это то, что я использую, чтобы получить рабочий каталог и продолжить оставшиеся операции import os path = os.getcwd()   -  person Sandrin Joy    schedule 09.09.2020


Ответы (1)


Когда я намеренно запустил файл как модуль, он разрешил: python -m test.augmentationFile. Проблема заключалась в местоположении ошибки оператора src, он находился внутри кода, не был обычным оператором импорта.

person b.g.    schedule 09.09.2020