Зарегистрируйтесь, чтобы продолжить обучение

Зависимости для разработки Python: Настройка окружения

У любого проекта есть как минимум два режима использования. Их обычно называют средами. Например, когда разработчик работает над проектом у себя на компьютере, то он запускает его в среде разработки, development. Когда же проект попадает в то место, где им пользуются, то тогда среду называют продакшеном, production.

С одной стороны, эти среды всегда стараются делать похожими, чтобы избежать ошибок, связанных с особенностями конкретной среды, с другой, к ним, все же, предъявляются разные требования. Например, для разработки часто бывают нужны дополнительные пакеты, которые помогают самому процессу разработки, например, пакеты для автоматизированного тестирования кода. Представьте, что вы себе скачали библиотеку в проект, а вместе с ней скачались и все линтеры, которые использовались при ее разработке. Вам, как пользователю библиотеки, они ни к чему, но вот место на диске они занимают. Для продакшен среды важно не тянуть за собой ненужных вещей, так как это сильно влияет на скорость доставки кода на продакшен.

Для решения этой задачи есть возможность явно указывать зависимости, которые нужны только во время разработки. Делается это с помощью специального флага во время установки:

# pytest – тестовый фреймворк,
# с помощью которого пишутся автоматизированные тесты кода
uv add --dev pytest

Процедура установки здесь практически не отличается от установки обычных пакетов. Разница только в том, что описание зависимости появится не в dependencies, а в dev-dependencies.

[tool.uv]
dev-dependencies = [
    "pytest>=8.3.3",
]

С точки зрения использования, эти пакеты ничем не отличаются от пакетов, устанавливаемых в dependencies. Их точно также можно импортировать в код. Разница только в том, где их импортируют. Как правило, для тестирования кода создается отдельная директория. Внутри нее располагают код тестов, которые запускаются только в среде разработки. Поэтому импорты этого кода не пересекаются с импортами кода самого проекта.

Все это можно своими глазами увидеть в специальном пакете, созданном Хекслетом как пример эталонного проекта.

Флаг --no-dev

Зависимости для разработки всегда устанавливаются при запуске uv sync. Здесь разработчики исходили из того, что чаще всего эта команда вызывается во время разработки, поэтому самый короткий вариант был оставлен для среды разработки. Для продакшена нужно добавлять специальный флаг:

# Вот теперь зависимости из dev-dependencies устанавливаться не будут
uv sync --no-dev

Несмотря на то, что с продакшеном вы познакомитесь чуть позже, знать про dev-dependencies нужно сразу, так как они встречаются в исходных файлах подавляющего большинства проектов и это не должно быть сюрпризом.


Самостоятельная работа

  1. Склонируйте проект python-package
  2. Установите его командой uv sync
  3. Из корневой директории проекта запустите код на выполнение как uv run hexlet-python-package 10. На экран должно вывестись число
  4. Запустите тесты uv run pytest. Они должны завершиться успехом
  5. Посмотрите какие зависимости есть в проекте
  6. Изучите содержимое .venv, в частности поддиректорию .venv/lib/<ваша версия python>/site-packages. Затем удалите .venv и установите зависимости с флагом --no-dev. Посмотрите на новое содержимое директории.

Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы
профессия
от 25 000 ₸ в месяц
Разработка веб-приложений на Django
10 месяцев
с нуля
Старт 19 декабря

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»