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, но это навряд ли.
[НЕ]Вайбкодим анализатор страниц на FastAPI