1. Настройка VS Code для Python: окружения, линтеры, форматирование
Настройка VS Code для Python: окружения, линтеры, форматирование
Эта статья открывает курс «Эффективная разработка на Python: VS Code + pytest + GitHub Copilot». Наша цель — сделать так, чтобы VS Code:
В следующих статьях мы добавим тестирование через pytest и ускорим работу с GitHub Copilot. Но фундамент — это окружение, линтеры и форматирование.
Что установим и почему
Минимальный набор инструментов, который хорошо работает вместе:
Ссылки на официальные источники:
Подготовка проекта: структура и окружение
Правило: один проект — одно окружение. Так вы избегаете ситуации, когда VS Code «видит» одни пакеты, терминал — другие, а тесты — третьи.
Варианты окружений
Чаще всего используют:
| Вариант | Когда выбирать | Плюсы | Минусы |
|---|---|---|---|
| venv | большинство проектов | встроен в Python, простой | зависимости в requirements.txt нужно вести аккуратно |
| Poetry | если нужен удобный менеджмент зависимостей | фиксирует версии, управляет окружениями | нужно освоить команды Poetry |
| Conda | если много научных/бинарных пакетов | удобно для ML/DS | отдельная экосистема, может усложнять команды |
В рамках этой статьи будем опираться на venv, потому что он универсален и достаточно прост.
Создаём окружение venv
Откройте терминал в корне проекта и выполните:
Активация:
Проверка, что активирован именно нужный Python:
Подключаем VS Code к нужному интерпретатору
Устанавливаем расширение Python
Установите расширение Python (издатель Microsoft). Оно отвечает за:
Выбираем интерпретатор проекта
Ctrl+Shift+P (Windows/Linux) или Cmd+Shift+P (macOS)Python: Select Interpreter.venvЕсли .venv не находится автоматически:
.venv лежит в корне workspace;Developer: Reload Window.Линтинг и форматирование: в чём разница
Важно: форматирование помогает договориться о стиле в команде, а линтинг — быстрее находить ошибки.
!Как работает автоматическое форматирование и линтинг при сохранении файла
Устанавливаем Ruff и (опционально) mypy
Установим инструменты в проектное окружение:
Проверка:
Настраиваем Ruff через pyproject.toml
Хорошая практика — хранить настройки инструментов в pyproject.toml в корне проекта.
Создайте pyproject.toml:
Что здесь важно:
line-length: максимальная длина строки (часто 88 — привычное значение в экосистеме Python).target-version: под какую версию Python ориентироваться при проверках.select: набор групп правил. В примере:E, F — базовые ошибки стиля и реальные ошибки (часто совпадает с тем, что ожидают по PEP 8 и pyflakes-проверкам)
- I — порядок импортов
- B — дополнительные проверки (bugbear)
- UP — рекомендации по современному синтаксису PythonПолный список правил и групп — в документации Ruff: Ruff Rules.
Настраиваем VS Code: форматирование при сохранении и линтинг
Лучше фиксировать настройки на уровне проекта, чтобы у всей команды было одинаково.
Создайте файл .vscode/settings.json:
Пояснения:
editor.formatOnSave: включает форматирование при сохранении.editor.defaultFormatter: выбираем Ruff как форматтер для Python-файлов.ruff.lint.enable и ruff.format.enable: включаем линтинг и форматирование Ruff.python.analysis.typeCheckingMode: базовая проверка типов силами анализатора VS Code. Позже в курсе мы обсудим, когда и почему стоит включать более строгие режимы.Важно про путь интерпретатора:
.venv\\Scripts\\python.exe.python.defaultInterpreterPath, а полагаться на Python: Select Interpreter. Но тогда важно договориться, что окружение всегда называется одинаково (например, .venv).Документация по настройкам VS Code: VS Code User and Workspace Settings.
Быстрая проверка: всё ли работает
Создайте файл example.py:
Ожидаемое поведение:
Можно также запустить проверки вручную в терминале:
Настраиваем единый стиль во всех редакторах через EditorConfig
Если в команде кто-то использует другой редактор, полезно добавить .editorconfig:
Что это даёт:
Типичные проблемы и решения
VS Code не видит пакеты, которые установлены в терминале
Причина почти всегда одна: VS Code использует другой интерпретатор.
Проверьте:
.venv (Python: Select Interpreter)Ruff не форматирует файл
Проверьте:
ruff --version).vscode/settings.jsoncharliermarsh.ruff)Конфликты форматирования
Не включайте одновременно несколько форматтеров для Python (например, Black и Ruff Format) в режиме format on save. Выберите один инструмент как источник истины.
Итог
После этой настройки у вас есть базовая производственная среда разработки:
.venv и выбранный интерпретатор в VS Code;В следующей статье мы добавим тестирование через pytest и научим VS Code удобно запускать тесты, смотреть отчёты и быстрее находить причины падений.