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

#python-3.x #python-import

#python-3.x #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] в test folder и не может разрешить from src import * инструкцию и жалуется.

Как мне сообщить интерпретатору python (возможно, я ошибаюсь, чтобы найти соответствующий флаг, просматривая документ python 3 в cmdline), чтобы правильно определить каталоги? Один из вариантов, который приходит мне на ум, — это изменение augmentationFile.py Оператор импорта в оператор if проверяет sys.path и решает, следует ли импортировать из «..src» или «src». Необходимость изменять исходный код подобным образом в каждой подобной ситуации пугает меня. Поэтому я спрашиваю, возможно ли и как сообщить интерпретатору разрешить относительные пути с учетом текущего рабочего каталога? Спасибо,

Комментарии:

1. Это то, что я использую, чтобы получить рабочий каталог и продолжить оставшиеся операции import os path = os.getcwd()

Ответ №1:

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