Pull to refresh

Comments 3

Он предлагает два варианта:

Добавлять переменную окружения PYTHONPATH=src при запуске.

Заменить все импорты на абсолютные относительно директории src.

Первый вариант — костыль. Второй — выглядит куда лучше.

Как раз костыль - это ваше решение. PYTHONPATH для того и существует, чтобы интерпретатор знал, откуда отсчитывать пути для импорта.

Более того, если вы попробуете в любом запущенном приложении на Python вывести значение этой переменной окружения, то вас ждёт большой сюрприз, потому что ВНЕЗАПНО в ней уже окажутся прописаны разные файловые пути, по которым интерпретатор резолвит импорты, даже если вы не задавали значение переменной вручную.

Не соглашусь. Прописывать для каждого запуска своё значение и есть костыль, другое дело, когда всем этим управляет менеджер проекта, коим является в данном случае Poetry, иначе зачем он тогда?

Это никто вручную и не делает при каждом запуске. Переменные окружения вроде PYTHONPATH задаются ОДИН раз либо в конфигурации проекта/конфигурации запуска в IDE, либо на уровне среды исполнения (ОС/контейнер) для прода.

А вот уродовать КАЖДЫЙ путь импорта в проекте префиксом src просто из-за того, что разработчик не умеет пользоваться переменными окружения - это, повторюсь, костыль.

Если у вас монолит с бэком и фронтом, разделённый на директории backend и frontend, то тогда ваши пути импорта превратятся ещё и в "from backend.src.module import something", что вообще полный ужас. А при нормальном использовании PYTHONPATH всё будет выглядеть так: "from module import something".

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

Sign up to leave a comment.

Articles