Создание изолированного окружения с Python 3: инструмент venv

Раздел: Управление окружением -> Виртуальные окружения

Создание виртуального окружения с помощью venv

Основной и рекомендуемый способ создания виртуального окружения для Python 3 - использование встроенного модуля venv. Это позволяет изолировать зависимости проекта от глобальной системы и избежать конфликтов версий пакетов. Для создания окружения выполняется команда в терминале:

python3 -m venv my_project_env

Python venv ubuntu (создать виртуальное окружение python в ubuntu)

После этого создаётся папка my_project_env, содержащая копию интерпретатора Python, стандартную библиотеку и утилиту pip. Для активации окружения используются скрипты:

# Linux / macOS
source my_project_env/bin/activate

# Windows (Command Prompt)
my_project_env\Scripts\activate.bat

# Windows (PowerShell)
.\my_project_env\Scripts\Activate.ps1

Python activate window (активация виртуального окружения python в windows)

После активации в начале строки терминала появляется название окружения. Теперь все установки пакетов через pip будут происходить изолированно. Для выхода из окружения используется команда deactivate. Такой подход решает задачу управления зависимостями в большинстве проектов.

Типичные ошибки и их решение
  • Ошибка: venv не распознан как команда - убедитесь, что Python 3 установлен и добавлен в PATH. На Windows можно использовать путь к полному исполняемому файлу python.exe -m venv.
  • Проблемы с правами доступа - на Linux/macOS может потребоваться разрешение на выполнение скрипта активации. Используйте chmod +x my_project_env/bin/activate или запустите терминал от имени пользователя.
  • После активации pip использует глобальные пакеты - проверьте, что окружение активировано корректно (должен быть префикс в терминале). Если проблема остаётся, пересоздайте окружение с ключом --without-pip, а затем установите pip заново.

Как создать окружение с указанием конкретной версии Python?

Если в системе установлено несколько версий Python (например, 3.8 и 3.11), нужно явно указывать нужную версию при создании. Например, для Python 3.8:

python3.8 -m venv project_env

Python venv exit (выход из виртуального окружения python)

На Windows можно использовать полный путь: C:\Python38\python.exe -m venv project_env. Это бывает полезно для совместимости со старыми библиотеками или когда проект требует определённого минорного релиза.

Как создать окружение с предустановленными пакетами из файла?

Часто требуется сразу установить зависимости после создания окружения. Это делается через файл requirements.txt. Сначала создаётся окружение, затем оно активируется, и выполняется:

pip install -r requirements.txt

Venv python version (версия python в виртуальном окружении)

Если файл лежит не в текущем каталоге, нужно указать полный путь. Такой подход ускоряет настройку среды для разработчиков и разворачивание на серверах.

Ошибка: файл requirements.txt не найден - убедитесь, что файл существует и указана правильная директория. Можно сначала создать его командой pip freeze > requirements.txt после установки нужных пакетов.

Как изолировать окружение от системных пакетов?

По умолчанию venv не копирует глобальные пакеты. Но если нужно запретить доступ вообще, используйте ключ --without-pip (тогда pip не устанавливается) или наоборот разрешить доступ через --system-site-packages. Пример для полной изоляции:

python3 -m venv --without-pip isolated_env
source isolated_env/bin/activate
python -m ensurepip --upgrade  # если pip всё же нужен

Python venv commands (команды виртуального окружения python)

Этот вариант применяется в окружениях с жёсткими требованиями к безопасности.

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

Удаляется окружение просто удалением его директории, так как venv не создаёт записей в системе. Команда:

rm -rf my_project_env  # Linux/macOS
rmdir /s my_project_env  # Windows

Перед удалением стоит деактивировать окружение, если оно активно. Удаление не влияет на глобальный Python.

Как использовать созданное окружение в среде разработки (например, VSCode)?

Большинство IDE автоматически распознают папку окружения (например, venv или .venv) и предлагают выбрать её в качестве интерпретатора. В VSCode можно открыть палитру команд (Ctrl+Shift+P), выбрать Python: Select Interpreter и указать путь к bin/python (Linux/macOS) или Scripts/python.exe (Windows). После этого все запуски и отладка будут использовать изолированное окружение.

- Python unable to create venv (ошибка создания виртуального окружения python)
- Venv bin python (путь к интерпретатору в виртуальном окружении)
- Venv python 3 (создание виртуального окружения с python 3)

Расширенные примеры работы с venv

Создание окружения с обновлением pip и setuptools

При создании нового окружения можно сразу обновить ключевые пакеты до последних версий с помощью ключа --upgrade-deps (доступен в Python 3.9+):

Пример
python3 -m venv --upgrade-deps my_env
source my_env/bin/activate
pip list
Package    Version
---------- -------
pip        24.2
setuptools 75.1.0

Это избавляет от необходимости выполнять обновления вручную после активации.

Создание нескольких окружений для разных проектов

Для каждого проекта рекомендуется создавать отдельное окружение. Например, для веб-приложения (Flask) и для анализа данных (pandas, numpy):

Пример
python3 -m venv flask_app
python3 -m venv data_analysis

После чего активируйте нужное и устанавливайте специфические пакеты.

Работа с requirements.txt: создание и восстановление

После установки пакетов в окружении фиксируются версии:

Пример
pip freeze > requirements.txt
cat requirements.txt
Flask==3.0.3
numpy==1.26.4
pandas==2.2.2

Для восстановления окружения на другом компьютере или после очистки:

Пример
python3 -m venv new_env
source new_env/bin/activate
pip install -r requirements.txt

Все версии будут совпадать с исходными.

Использование venv с разными версиями Python в одном проекте (pyenv + venv)

Если требуется тестировать код на Python 3.7, 3.9 и 3.11, можно установить эти версии через pyenv, а затем создать окружение для каждой:

Пример
pyenv install 3.7.17
pyenv install 3.9.18
pyenv shell 3.7.17
python -m venv test_37
pyenv shell 3.9.18
python -m venv test_39

Активируя по очереди, можно проверить совместимость.

Автоматизация активации окружения в скриптах

Для неинтерактивных скриптов (например, в CI/CD) активация может не понадобиться - достаточно указывать полный путь к интерпретатору:

Пример
#!/bin/bash
./my_env/bin/python -c "import flask; print(flask.__version__)"

Такой подход избегает проблем с изменением окружения в родительской оболочке.

Перемещение окружения в другую директорию

Виртуальное окружение привязано к абсолютному пути, поэтому простое копирование папки может привести к ошибкам. Лучше удалить и заново создать окружение на новом месте, используя requirements.txt. Если перемещение всё же необходимо, можно отредактировать файл pyvenv.cfg внутри папки, изменив параметр home на новый путь. Однако это не гарантирует стабильной работы, поэтому не рекомендуется.

Создание виртуального окружения с Python 3 - comments

En
Venv python 3 (python)