Вопрос или проблема
В VS Code я развиваюсь внутри подсистемы Python и хочу выполнять код построчно в интерактивном repl. Однако, если я “правой кнопкой мыши” > “Запустить в интерактивном окне” > “Запустить выбор/строку в интерактивном окне”, то абсолютные импорты из других модулей в моем проекте больше не работают, например, from src.other_module import something
больше не находит src
, модуль в корне моего проекта. Похоже, что интерактивный repl выполняет код из родительского каталога my_submodule
. Проблема в том, что вообще говоря, мой код написан в моем подсистеме из корня проекта, например, cd project_root
> python ./module/my_submodule
. Мне нужно, чтобы это по умолчанию указывало на корень проекта. Исправление этой проблемы ускорило бы мой процесс разработки, так как я мог бы тестировать строки кода гораздо гибче, чем используя отладчик, например. Для справки ниже приведена структура проекта, которая иллюстрирует импорты (хотя реальный проект значительно сложнее).
project_root
|__src
|__other_module
|__module
|__my_submodule
В более широком смысле, если у людей есть предложение о том, как лучше развиваться в VS Code, чем я пытаюсь, я буду благодарен за это. Я привык развиваться в Jupyter notebooks и хотел бы сохранить гибкость, которую они предлагают, при разработке в .py файлах.
Спасибо за любую помощь!
Ответ или решение
Для тех, кто использует VS Code для разработки на Python, работа с интерактивным REPL может представлять определённые трудности, особенно когда вы сталкиваетесь с проблемами импорта. В данном контексте, важно обеспечить, чтобы ваша среда была правильно настроена, что позволит вашему коду выполняться так, как будто вы находитесь в корневой директории проекта.
Проблема импорта в интерактивном окне
Когда вы запускаете код в интерактивном окне, VS Code может автоматически определять текущую директорию рабочего пространства как директорию вашего подмодуля. Это приводит к тому, что относительные импорты, такие как from src.other_module import something
, не срабатывают, потому что Python не может найти корневой модуль src
.
Как запустить код из корневой директории проекта
Чтобы решить эту проблему, вы можете воспользоваться несколькими методами.
Метод 1: Изменение конфигурации Python в VS Code
Вы можете указать VS Code, где находится корень вашего проекта, следующим образом:
-
Откройте файл настройки проекта:
Создайте или отредактируйте файл.vscode/settings.json
в корне вашего проекта. -
Добавьте следующие строки:
{ "python.analysis.extraPaths": ["./src"] }
Это укажет VS Code включить директорию
src
в пути поиска модулей.
Метод 2: Настройка PYTHONPATH
Вы также можете установить переменную окружения PYTHONPATH
, чтобы включить корневую директорию проекта:
-
Создайте файл запуска:
В вашем проекте создайте файл.env
на корне, если он ещё не существует. -
Добавьте путь в .env:
PYTHONPATH=.
Это позволит Python определять корневую директорию проекта при запуске кода в интерактивном окне.
Метод 3: Ручное объявление PYTHONPATH в интерактивном окне
Если вы работаете в интерактивном окне, вы можете вручную установить PYTHONPATH
перед запуском кода:
import sys
import os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
Альтернативные методы разработки
Если вы ищете более удобные инструменты для разработки, обратите внимание на альтернативы, которые могут предложить гибкость, подобную Jupyter Notebook:
-
Использование Jupyter Notebook в VS Code:
Если Jupyter Notebook вам привычен, вы можете использовать его в VS Code, интегрируя выполнение Python-кода прямо в ячейках. Для работы с вашим проектом установите расширение Jupyter и затем откройте новый файл.ipynb
. -
Создание тестов через unittest:
Также рассмотрите использование фреймворкаunittest
илиpytest
для создания тестов. Это позволит вам проверять отдельные функции вашего кода с помощью определённых тестов, что может значительно ускорить процесс разработки. -
Использование интерактивного режима Python:
Вы можете запускать Python в интерактивном режиме, находясь в корне вашего проекта, запустивpython
в терминале и затем импортируя необходимые модули. Это может быть простой, но эффективный способ работать с вашим кодом.
Заключение
Использование VS Code для работы с Python имеет свои особенности, однако с помощью описанных методов можно легко настроить вашу среду разработки для удобной работы с импортами и REPL. Экспериментируйте с различными подходами, чтобы найти тот, который лучше всего соответствует вашим потребностям в разработке. Если вы предпочтете работать с Jupyter Notebook, это может дополнительно упростить процесс тестирования и отладки кода.