Виртуальные окружения Python: зачем нужны и как использовать

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

РазработкаPython

6 мин

Что такое виртуальное окружение?

Виртуальное окружение — это изолированная среда для Python-проекта, которая имеет собственный набор установленных пакетов. Это как отдельная комната для каждого проекта, где живут только нужные ему библиотеки.

Зачем нужна изоляция?

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

Конфликты версий. Разные проекты могут требовать разные версии одной и той же библиотеки. Без изоляции придётся выбирать одну версию для всех.

Загрязнение системы. Со временем накапливается множество неиспользуемых пакетов, которые сложно отследить и удалить.

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


Создаём первое виртуальное окружение

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

Откройте терминал в папке вашего проекта и выполните команду:

python -m venv venv

Здесь первое слово venv — это название модуля, а второе — имя папки для окружения. Можно использовать любое имя, но venv или .venv стали стандартом де-факто.

После выполнения команды появится папка venv со следующей структурой:

venv/
├── bin/          # скрипты активации (на Windows — Scripts/)
├── include/      # заголовочные файлы
├── lib/          # установленные пакеты
└── pyvenv.cfg    # конфигурация окружения

Активация и деактивация

Создать окружение недостаточно — его нужно активировать. После активации все команды pip и python будут работать внутри этого окружения.

На Linux и macOS:

source venv/bin/activate

На Windows:

venv\Scripts\activate

После активации в начале строки терминала появится (venv) — это означает, что окружение активно.

Чтобы выйти из виртуального окружения, просто наберите:

deactivate

Устанавливаем пакеты

Теперь, когда окружение активировано, можно устанавливать нужные библиотеки:

pip install requests
pip install django==4.1

Все пакеты установятся именно в папку venv/lib, а не в систему. Проверить список установленных пакетов можно командой:

pip list

Файл requirements.txt

Чтобы другие разработчики (или вы сами на другом компьютере) могли легко воссоздать окружение, используется файл requirements.txt. Это простой текстовый файл со списком всех зависимостей проекта.

Создать его можно командой:

pip freeze > requirements.txt

Содержимое файла будет примерно таким:

requests==2.28.1
Django==4.1.0
certifi==2022.9.24

Теперь любой человек может установить все нужные пакеты одной командой:

pip install -r requirements.txt

Альтернативы venv

Хотя venv входит в стандартную библиотеку Python, существуют и другие инструменты для работы с виртуальными окружениями:

virtualenv — более старый инструмент, который поддерживает дополнительные возможности и работает быстрее на некоторых системах.

pipenv — объединяет управление зависимостями и виртуальными окружениями, использует файлы Pipfile вместо requirements.txt.

poetry — современный менеджер зависимостей с расширенными возможностями управления проектами и публикацией пакетов.

conda — популярен в Data Science, так как может устанавливать не только Python-пакеты, но и системные библиотеки.

Для начинающих разработчиков venv остаётся оптимальным выбором благодаря простоте и отсутствию необходимости что-то устанавливать дополнительно.

Решение типичных проблем

Окружение не активируется на Windows? Возможно, нужно разрешить выполнение скриптов. Запустите PowerShell от администратора и выполните:

Set-ExecutionPolicy RemoteSigned

Команда python не работает? На некоторых системах нужно использовать python3 вместо python.

Забыли, активировано ли окружение? Проверьте командой which python (Linux/macOS) или where python (Windows). Путь должен указывать на папку вашего виртуального окружения.

Заключение

Виртуальные окружения — это базовый инструмент любого Python-разработчика. Они решают множество проблем и делают работу над проектами более удобной и предсказуемой. Потратьте немного времени на освоение этой техники, и она окупится многократно в ваших будущих проектах.

Хотите глубже изучить Python?
Приглашаем в Кодик — здесь вы найдёте структурированные курсы для разработчиков любого уровня. А ещё у нас есть крутой телеграм-канал с дружеским комьюнити, где можно задать вопросы, поделиться опытом и получить поддержку от единомышленников!

Комментарии