Вопрос или проблема
У меня есть монорепозиторий с моим кодом на Python в подкаталоге ./api/src
. Когда у меня есть пакет в файле Python, который я еще не импортировал, быстросправка предлагает импорт в правильный модуль, но использует from api.src.package
вместо просто from package
. Я меняю это вручную, но было бы здорово иметь возможность настроить правильный импорт.
Ответ или решение
Как настроить корневой импорт в Visual Studio Code для Python в монорепозитории
Работа с монорепозиториями может создать определённые сложности при настройке среды разработки, особенно когда дело касается путей импорта для модулей. В вашем случае, когда вы используете код Python в подпапке ./api/src
и сталкиваетесь с тем, что VSCode предлагает импортировать модули с префиксом api.src
, вместо того чтобы использовать только имя пакета, возникает необходимость в настройке окружения вашего проекта.
Шаги по настройке корневого импорта
-
Создание файла
.env
илиsettings.json
:
Вам необходимо указать VSCode, где находится корень вашей программы. Это можно сделать, создав файл.env
в корневой директории вашего проекта или настройкойsettings.json
вашего рабочего пространства.Если вы используете файл
.env
, добавьте следующий путь:PYTHONPATH=./api/src
-
Настройка
settings.json
:
Откройте настройки вашего проекта VSCode, нажавCtrl + ,
(илиCmd + ,
на Mac), затем щёлкните по значку в правом верхнем углу, чтобы открыть настройки в формате JSON. Включите следующие параметры:{ "python.autoComplete.extraPaths": ["./api/src"], "python.analysis.extraPaths": ["./api/src"], "python.analysis.indexing": true, "python.analysis.typeCheckingMode": "basic" }
-
Настройка
__init__.py
:
Проверьте, чтобы в директорииapi/src
был файл__init__.py
. Это позволит Python интерпретировать директорию как пакет. -
Перезапуск VSCode:
После изменения настроек рекомендуется перезапустить VSCode, чтобы новые пути импорта применились корректно. -
Проверка конфигурации:
После выполнения всех вышеуказанных шагов, попробуйте импортировать нужный пакет заново. Теперь VSCode должен предлагать импорт в видеfrom package
, а неfrom api.src.package
.
Альтернативные решения
Если вы всё же столкнётесь с теми же проблемами при импорте, можете попробовать следующие способы:
-
Использование виртуального окружения: Убедитесь, что вы используете виртуальное окружение для вашего проекта. Установка зависимостей и настройка PYTHONPATH внутри виртуального окружения может помочь устранить конфликты путей.
-
Переименование структуры каталогов: В некоторых случаях изменение структуры каталогов может устранить необходимость использования префиксов. Рассмотрите возможность перемещения файлов на уровень выше в иерархии.
Помните, что оптимизация разработки в VSCode для работы с монорепозиториями требует некоторых дополнительных настроек, но в итоге создаёт более комфортную среду для работы над проектом.
Используйте эти советы, и ваши импорты в Visual Studio Code станут более управляемыми и удобными.