1. Экосистема профи: Git, виртуальные окружения и стандарты кода
Экосистема профи: Git, виртуальные окружения и стандарты кода
Добро пожаловать в профессиональную лигу. Если раньше ваш код жил в одном файле main.py на рабочем столе, а библиотеки устанавливались глобально командой pip install, то сегодня мы меняем правила игры.
Переход от любителя к профессионалу начинается не со знания сложных алгоритмов, а с организации рабочего пространства. В этой статье мы настроим фундамент, на котором будут строиться все наши будущие проекты: от CLI-утилит до веб-сервисов.
Почему «работает на моем компьютере» — это не аргумент
Представьте, что вы строите дом. Любительский подход — это прийти на стройку с одним молотком и кучей разнородных материалов, сваленных в кучу. Профессиональный подход — это организованный склад, четкие чертежи и стандартизированные инструменты.
В Python «склад» и «инструменты» — это виртуальные окружения, управление зависимостями и контроль версий. Без них любой проект сложнее «Hello World» обречен на так называемый «Dependency Hell» (Ад зависимостей).
!Сравнение глобальной установки пакетов и изолированных виртуальных окружений
Виртуальные окружения: Изоляция прежде всего
Главное правило Python-разработчика: никогда не устанавливайте пакеты в системный интерпретатор.
Почему? Представьте, что Проекту А нужен Django 3.0, а Проекту Б — Django 4.0. Если вы ставите их глобально, один из проектов перестанет работать. Виртуальное окружение (venv) создает изолированную папку с собственной копией интерпретатора Python и менеджера пакетов pip.
Классический подход: venv
Это встроенный инструмент, который есть в Python по умолчанию. Создание окружения выглядит так:
После создания его нужно активировать:
* Windows: venv\Scripts\activate
* macOS / Linux: source venv/bin/activate
Когда окружение активировано, в терминале появится префикс (venv). Теперь все, что вы установите через pip install, попадет только в эту папку.
Современный стандарт: Poetry
Хотя venv и requirements.txt (список зависимостей) являются классикой, индустрия движется к более мощным инструментам. Мы в курсе будем использовать Poetry.
Poetry решает сразу три задачи:
Установка Poetry (выполняется один раз глобально):
Инициализация нового проекта:
Это создаст правильную структуру папок и файл pyproject.toml — паспорт вашего проекта.
Управление зависимостями: pyproject.toml
Файл requirements.txt — это просто список. Файл pyproject.toml — это декларация. В нем описывается не только то, какие библиотеки нужны, но и какие версии совместимы, а также настройки инструментов разработки.
Пример добавления библиотеки через Poetry:
Poetry автоматически:
requests.pyproject.toml и poetry.lock.Файл poetry.lock критически важен. Он «замораживает» конкретные версии всех установленных пакетов. Это гарантирует, что если ваш коллега скачает проект и запустит poetry install, у него будет бит-в-бит то же самое окружение, что и у вас.
Git: Ваша машина времени
Git — это не просто способ сохранить код. Это история развития вашего продукта. В профессиональной разработке мы следуем нескольким правилам:
1. Правильный .gitignore
Не все файлы должны попадать в репозиторий. Мусор, временные файлы, настройки IDE и само виртуальное окружение должны быть проигнорированы.
Типичный .gitignore для Python:
Обратите внимание на .env. В этом файле хранятся секреты (пароли, API-ключи). Никогда не отправляйте .env в Git. Для примера создают файл .env.example с пустыми значениями.
2. Атомарные коммиты
Плохой коммит: > "Исправил баг, добавил новую фичу и переписал половину проекта"
Хороший коммит: > "Fix: исправление ошибки валидации email"
Каждый коммит должен решать одну маленькую задачу. Это позволяет легко откатить изменения, если что-то пошло не так.
Чистота кода: Линтеры и Форматтеры
Код пишется для людей, а не для машин. Чтобы ваш код был читаемым и единообразным, мы используем автоматические инструменты проверки.
Flake8: Полиция нравов
flake8 проверяет ваш код на соответствие стандарту PEP 8 и ищет логические ошибки (например, импортированный, но неиспользуемый модуль).
Установка:
Запуск:
Black: Бескомпромиссный форматтер
Споры о том, ставить пробелы вокруг знака = или нет, отнимают время. Black решает эти споры раз и навсегда. Он просто берет ваш код и переписывает его в едином стиле.
Установка:
Запуск:
isort: Порядок в импортах
Импорты должны быть отсортированы: сначала стандартные библиотеки, потом сторонние, потом ваши собственные. isort делает это автоматически.
Структура профессионального проекта
Забудьте о свалке файлов в корне папки. Стандартная структура выглядит так:
Папка src (source) используется для того, чтобы избежать путаницы при импортах и четко отделить код приложения от конфигурационных файлов.
Практическое задание: Настройка окружения
Прежде чем мы начнем писать код первого проекта (CLI-утилиты), подготовьте свою рабочую станцию:
user.name и user.email.poetry new python-pro-setup.flake8 и black как dev-зависимости..gitignore!).Теперь вы готовы к настоящей разработке. В следующем модуле мы напишем нашу первую профессиональную CLI-утилиту, используя этот фундамент.