Инструкция обновлена 27 августа 2025 года
Виртуальное окружение (virtual environment) — это не просто полезный, а практически обязательный инструмент для Python-программиста. Его основная задача — создание изолированного пространства для работы над конкретным проектом, что позволяет управлять его зависимостями, не влияя на другие проекты или глобальную установку Python.
Предположим, вы разрабатываете два приложения. Для первого необходима устаревшая, но стабильная версия фреймворка Django 2.2, а для второго — современная версия 4.0. При установке в общее системное окружение более новая версия автоматически заместит старую, что приведет к поломке первого проекта. Виртуальное окружение полностью устраняет этот конфликт, предоставляя каждому проекту его собственную «песочницу». По своей сути, это автономная директория, которая содержит:
- Собственную копию интерпретатора Python (или ссылку на него).
- Независимый менеджер пакетов pip.
- Все библиотеки и зависимости, которые вы устанавливаете исключительно для этого проекта.
Виртуальное окружение позволит:
- Изолировать зависимости проектов: У каждого проекта свои версии библиотек, которые не зависят друг от друга.
- Избежать конфликтов: Любые установки или обновления пакетов в одном проекте не затронут другой.
- Упростить развертывание: Можно легко воссоздать точное окружение на другом компьютере или сервере.
- Работать без прав администратора: Устанавливать пакеты можно без системных привилегий.
В этой статье мы подробно рассмотрим, как создать и использовать виртуальное окружение в Python.
Способы создания виртуального окружения
Существует несколько инструментов для создания виртуальных окружений. Мы проанализируем четыре ключевых инструмента, каждый со своими особенностями: venv
, virtualenv
, conda
и UV
. Запускать окружения будем на облачном сервере Timeweb Cloud с использованием ОС Ubuntu.
venv
Начиная с Python 3.3, разработчикам больше не нужны сторонние инструменты вроде virtualenv
для создания изолированных сред. Стандартная библиотека языка включает в себя модуль venv
, который признан наиболее удобным и предпочтительным методом для этой задачи.
Создание окружения
- Открываем терминал и переходим в директорию с Python-проектом.
- Для активации виртуального окружения выполняем команду:
python -m venv my-first-env
Здесь my-first-env
— это имя папки, в которой будет создано виртуальное окружение. Его можно назвать как угодно. Часто используются имена venv
, .venv
, env
.
Команда создаст папку my-first-env
со следующей структурой:
├── my-first-env/ # Директория виртуального окружения
│ ├── bin/ # Исполняемые файлы
│ │ ├── python # Интерпретатор Python
│ │ ├── python3 # Ссылка на python
│ │ ├── pip # Менеджер пакетов
│ │ ├── pip3 # Ссылка на pip
│ │ ├── activate # Активация для bash
│ │ ├── activate.csh # Активация для csh
│ │ └── easy_install* # Установщик пакетов
│ ├── include/ # C-заголовки для компиляции
│ ├── lib/ # Установленные пакеты
│ │ └── python3.X/ # Используемая версия Python
│ │ └── site-packages/
│ │ ├── pip/ # Пакет pip
│ │ ├── setuptools/
│ └── pyvenv.cfg # Конфигурация окружения
- Перед тем как использовать виртуальное окружение, его необходимо активировать. Это временно меняет переменные окружения текущей shell-сессии так, чтобы команды
python
иpip
ссылались на версии внутри созданного виртуального окружения. Для активации окруженияmy-first-env
выполняем команду внутри директории с проектом:
source my-first-env/bin/activate
При успешной активации в начале строки терминала отобразится приглашение с именем окружения.
- Для деактивации виртуального окружения используется команда:
deactivate
После этого имя окружения слева пропадет. Команду по деактивации виртуального окружения можно выполнять из любого места в файловой системе.
virtualenv
virtualenv — популярный сторонний инструмент, который предлагает больше функций и немного быстрее. Также virtualenv
можно использовать для создания окружений для более старых версий Python (например, Python 2.5).
Создание окружения
- В отличие от
venv
,virtualenv
необходимо установить заранее. Произведем установку при помощи пакетного менеджера операционной системы. Так как мы используем Ubuntu, то воспользуемся менеджеромapt
для установки пакета:
apt install python3-venv -y
- Далее переходим в папку с проектом Python и создаем виртуальное окружение с именем
my-second-env
:
virtualenv my-second-env
- Процессы активации и деактивации аналогичны при работе с
venv
. Для активации необходимо выполнить команду:
source my-second-env/bin/activate
Для деактивации достаточно выполнить:
deactivate
conda
conda — это кроссплатформенный менеджер пакетов и окружений. Он управляет не только Python-пакетами, но и, например библиотеками на C/C++.
Создание окружения
- Мы установим пакет Miniconda, которая содержит в себе предустановленный набор из более чем 1500 самых популярных пакетов для data science.
Для начала создадим директорию с именем miniconda3
в домашнем каталоге пользователя:
mkdir -p ~/miniconda3
- Скачиваем архив с программой при помощи утилиты
wget
:
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O ~/miniconda3/miniconda.sh
- Выполняем автоматическую установку Miniconda при помощи команды:
bash ~/miniconda3/miniconda.sh -b -u -p ~/miniconda3
- После завершения установки удаляем установочный скрипт:
rm ~/miniconda3/miniconda.sh
- Далее инициализируем
conda
при помощи команд:
source ~/miniconda3/bin/activate
conda init --all
- Переходим в директорию с проектом и создаем новое виртуальное окружение:
conda create --name my-conda-env
При появлении надписи Proceed ([y]/n)?
вводим y
:
После того как виртуальное окружение будет создано, в выводе будут сгенерированы команды для активации и остановки окружения:
В нашем примере для активации необходимо выполнить команду:
conda activate my-conda-env
Для деактивации используется команда:
conda deactivate
UV
UV — это современный инструмент, написанный на языке Rust, который заменяет собой целый набор утилит для управления зависимостями и виртуальными окружениями в Python.
Создание окружения
- Для начала необходимо установить UV. Для этого выполняем команду:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Перед запуском UV необходимо добавить его бинарный файл в
PATH
:
source $HOME/.local/bin/env
- Прежде чем приступать к работе с UV, его необходимо инициализировать. Для этого выполняем команду:
uv init uv-test-project
И переходим в созданную директорию:
cd uv-test-project
- Создаем виртуальное окружение:
uv venv
- Для активации выполняем команду:
source .venv/bin/activate
- Установить пакет можно при помощи команды:
uv add requests
Использование виртуального окружения на практике — на примере venv
- Создаем новую директорию и переходим в нее:
mkdir test-env && cd test-env
- Создаем виртуальное окружение при помощи команды:
python -m venv test-env
Далее активируем:
source test-env/bin/activate
- Установим несколько пакетов при помощи менеджера пакетов
pip
(теперь пакеты будут устанавливаться внутрь созданного виртуального окружения, а не глобально):
pip install requests numpy pandas
- После того как работа над проектом завершена, необходимо сохранить зависимости в файл. Данная особенность позволяет легко воссоздать окружение на другом компьютере. Для сохранения зависимостей используется команда
pip freeze
, которой в качестве аргумента необходимо указать файл. Как правило используется файлrequirements.txt
, однако можно использовать любое другое имя:
pip freeze > requirements.txt
- Проверим содержимое файла
requirements.txt
:
cat requirements.txt
В файл были записаны все используемые сторонние библиотеки, а также их версии.
- Чтобы восстановить зависимости на новом устройстве при переносе или копировании проекта, необходимо выполнить команду:
pip install -r requirements.txt
Заключение
Виртуальное окружение в Python стало незаменимым инструментом в процессе разработки. Возникает вопрос: какой же инструмент выбрать?
- Для большинства проектов используйте стандартный
venv
или более продвинутый UV. - Если нужны дополнительные функции или работа с Python 2, используйте
virtualenv
. - Если вы занимаетесь Data Science, то используйте экосистему Conda.