1. Что такое виртуальное окружение?
Изучаете, как создать виртуальное окружение в Python? Вы попали по адресу! В этой статье мы рассмотрим основные параметры и научим вас с ним работать.
Виртуальное окружение — это изолированная среда, позволяющая устанавливать и использовать пакеты Python отдельно от глобальной установки. Представьте виртуальное окружение как отдельный рабочий стол для каждого проекта. Вы можете установить необходимые библиотеки и модули только в этом окружении, не беспокоясь о влиянии на другие проекты или вашу глобальную систему Python.
Это особенно важно при работе с проектами, использующими разные версии библиотек. Без виртуальных окружений вы рискуете столкнуться с конфликтами версий и неожиданными ошибками. Например, проект A может требовать Flask 2, а проект B — Flask 3. Виртуальные окружения позволяют установить разные версии библиотек для каждого проекта, обеспечивая независимость и стабильность работы.
2. Где и как виртуальное окружение сохраняет зависимости?
При создании виртуального окружения оно создает отдельную папку (по умолчанию venv), где хранятся все установленные пакеты и конфигурации. Обычно оно создается в домашней директории пользователя, так как не рекомендуется создавать и работать в виртуальных окружениях от root.
Путь | Содержимое |
venv/bin | Содержит исполняемые файлы Python, pip и другие инструменты для работы с виртуальным окружением. |
venv/lib | Хранит библиотеки Python и модули, установленные в окружении. |
venv/env | Путь до конфигураций виртуального окружения: версии Python, установленных пакетов и других настроек. |
3. Сравнение с глобальными установками пакетов
Можно возразить, что проще поставить пакеты непосредственно в операционную систему и не мучаться с виртуальными окружениями. На первый взгляд это так, но глобальная установка пакетов из репозиториев имеет свои существенные недостатки:
-
Конфликты версий.
Если разные проекты зависят от разных версий одного и того же пакета, это может привести к конфликтам. При глобальной установке эти конфликты возникают, так как система не знает, какую версию библиотек использовать для каждого проекта.
-
Загрязнение системы.
Глобальная установка всех библиотек занимает много места и может замедлить работу системы. Все пакеты устанавливаются в общую директорию, что может привести к накоплению ненужных файлов.
Виртуальные окружения решают эти проблемы, так как предоставляют:
-
Изоляцию проектов.
Каждое виртуальное окружение имеет свою копию зависимостей, что предотвращает конфликты версий. Проект A может использовать версию 2.0 библиотеки numpy, а проект B — версию 2.2 без возникновения конфликтов.
-
Оптимизацию ресурсов.
Только необходимые библиотеки устанавливаются в конкретное виртуальное окружение, экономя место и ресурсы системы. Не нужно скачивать и хранить все пакеты на компьютере, что ускоряет работу системы и освобождает место на диске.
-
Упрощение работы с пакетами.
Виртуальные окружения позволяют легко управлять зависимостями для каждого проекта. Можно легко установить, удалить или обновить пакеты только в конкретном виртуальном окружении без влияния на другие проекты.
Кроме вышеуказанных преимуществ виртуальные окружения представляют:
-
Повышенную безопасность.
Виртуальные окружения изолируют проекты друг от друга, что снижает риск заражения системы вредоносным ПО.
-
Упрощение процесса деплоя.
При развертывании проекта на сервере можно легко скопировать директорию с виртуальным окружением и быть уверенным, что все необходимые зависимости будут доступны после его активации на новой машине. Если вы посмотрите на крупные Python-проекты, то зачастую они как раз распространяются в виде виртуальных окружений (или создают их при развертывании).
4. Как создать виртуальное окружение?
Создание виртуального окружения в Ubuntu
Для начала нужно проверить, какая версия Python установлена в системе:
Python3-version
В Ubuntu 22.04 по умолчанию установлен Python 3.10.
Затем нужно установить пакет для поддержки виртуального окружения:
sudo apt install python3-venv
После можно создать виртуальное окружение командой:
python3 -m venv my_project_env
Замените my_project_env на желаемое имя вашего виртуального окружения.
Создание виртуального окружение в Windows
Откройте командную строку. Для этого нажмите Win+R, введите cmd и нажмите Enter.
Используя команду cd перейдите в директорию вашего проекта:
cd C:\Users\YourUserName\Documents\MyProject
Создайте виртуальное окружение с именем my_project_env.
python -m venv my_project_env
5. Активация окружения
После создания виртуальное окружение нужно активировать:
-
Linux/macOS:
source my_project_env/bin/activate
-
Windows:
my_project_env\Scripts\activate
В активном окружении имя вашего виртуального окружения будет отображаться в начале командной строки.

При активации виртуального окружения в Python могут возникнуть следующие проблемы:
- Неправильный путь к исполняемому файлу.
- Если вы не укажете правильный путь к исполняемому файлу Python при активации виртуального окружения (например source venv/bin/activate), система может не распознать его и выдаст ошибку.
- Недостающие права доступа.
- Если у вас недостаточно прав на запись в каталог, где создано виртуальное окружение, вы не сможете активировать его.
- Несовместимость Python-версий.
- Активация виртуального окружения может привести к конфликту, если используемая версия Python в окружении не совместима с установленными версиями в системе.
- Проблемы с конфигурацией.
- Если у вас есть проблемы с конфигурацией виртуального окружения или файлами установщика (например pip), это может привести к ошибкам при активации виртуального окружения.
- Неправильный путь к файлу активации.
- Если вы активируете виртуальное окружение с неправильным путем к файлу активации (activate), система не сможет найти его и выдаст ошибку.
- Неправильно установленные пакеты.
Если пакеты были неправильно установлены в виртуальное окружение, это может привести к ошибкам при запуске проекта.
6. Деактивация окружения
Чтобы выйти из активного виртуального окружения, используйте команду deactivate. Приглашение командной строки вернет свой вид на прежний, как при логине под обычным пользователем.

7. Как использовать другую версию Python в виртуальном окружении
Как было описано ранее, вы можете установить виртуальные окружения для разных версий Python. Давайте создадим виртуальное окружение для Python 3.11.
Установите Python 3.11 и пакеты поддержки виртуального окружения для этой версии
sudo apt install python3.11
sudo apt install python3.11-venv
Создайте виртуальное окружение для этой версии Python
python3.11 -m venv my_project_311env
Активируйте виртуальное окружение:
source my_project_311env/bin/activate
Проверьте версию Python внутри виртуального окружения:
python-version

Затем выйдите из виртуального окружения командой deactivate и зайдите в окружение my_project_env. Проверьте там версию Python:

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