Создание виртуальных окружений Python (venv)

Виртуальное окружение — это изолированное пространство выполнения Python с собственным интерпретатором, установленными пакетами и конфигурацией, полностью изолированное от общесистемного окружения.

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

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

У каждого виртуального окружения есть свои:

  • Интерпретатор Python
  • Установленные пакеты/библиотеки
  • Переменные среды
Global installation (version conflicts) ✓ Virtual environment (completely isolated) Global Python environment site-packages (shared by all projects) Project A Needs Django 3.2 Project B Needs Django 4.0 Version conflict, cannot coexist Project A .venv Installs Django 3.2 independently Project B .venv Installs Django 4.0 independently

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

Зачем нужны виртуальные окружения

  • Изоляция проектов: разные проекты могут использовать разные версии Python и сторонних библиотек
  • Избежание загрязнения: установленные пакеты влияют только на текущее окружение, а не на глобальный Python
  • Контроль зависимостей: черезrequirements.txtточную запись и воспроизведение окружений
  • Безопасное тестирование: можно безопасно обновлять или пробовать новые пакеты, не влияя на другие проекты

Пример сценария:

  • Проекту A нужна версия Django 3.2
  • Проекту B нужна версия Django 4.0
  • Если установить глобально в системе, две версии будут конфликтовать

Инструменты виртуального окружения

Название инструмента Type Поддержка версий Python Способ установки Особенности Применимые сценарии
venv(Recommended) Встроенный модуль ≥ 3.3 Не требует установки, встроенный Лёгкий, официально рекомендован, прост в использовании Общая разработка, повседневные проекты
virtualenv Сторонний инструмент 2.x и 3.x pip install virtualenv Многофункциональный, поддерживает несколько версий Для совместимости со старыми версиями или расширенными возможностями
conda Поставляется вместе с Anaconda 2.x и 3.x Устанавливается вместе с Anaconda/Miniconda Кроссязычное управление пакетами, экосистема для data science Проекты в области data science и машинного обучения

Для поддержки старых версий можно использовать virtualenv (совместим с Python 2):

pip install virtualenv  # 非必须,venv 通常够用

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


Создание виртуального окружения

Python 3.3+ включает встроенныйvenvмодуль, дополнительная установка не требуется.

Рабочий процесс использования

Обзор рабочего процесса

1
Создайте
python -m venv
2
Активация
активировать
3
Установите зависимости
pip install
4
Разработка и отладка
python / run
5
Деактивировать
deactivate
Box 1: Create (purple) Create environment python -m venv Box 2: Activate (teal) Activate source activate Box 3: Install (teal) Install dependencies pip install Box 4: Develop (teal) Develop and run python / test Box 5: Deactivate (gray) Deactivate deactivate While activated: the pip and python commands point to the virtual environment, without affecting the global environment.

Проверьте версию Python:

python3 --version
# 或者
python --version

Создание виртуального окружения:

# 基本语法
python3 -m venv 环境名称

Например, создайте виртуальное окружение с именем.venv:

Пример

# Перейдите в каталог проекта
mkdir my_project && cd my_project

# Создайте виртуальное окружение (обычно его называют '.venv')
python3 -m venv .venv

Описания параметров:

  • -m venv: используйте модуль venv
  • .venv: имя виртуальной среды (можно настроить)

Структура каталогов после создания

.venv/
├── bin/            # 在 Unix/Linux 系统上
│   ├── activate    # 激活脚本
│   ├── python      # 环境 Python 解释器
│   └── pip         # 环境的 pip
├── Scripts/        # 在 Windows 系统上
│   ├── activate    # 激活脚本
│   ├── python.exe  # 环境 Python 解释器
│   └── pip.exe     # 环境的 pip
└── Lib/            # 安装的第三方库

Активация виртуального окружения

После активации команды python и pip в текущем терминале будут автоматически указывать на виртуальную среду, и все операции установки выполняются в изолированном пространстве.

macOS / Linux

source .venv/bin/activate

Windows(CMD / PowerShell)

.venv\Scripts\activate

После успешной активации в приглашении командной строки обычно отображается имя среды:

(.venv) $

Проверьте, что активация эффективна:

# 查看 Python 路径,应指向 .venv 目录
which python       # macOS/Linux
where python       # Windows
→ /path/to/my_project/.venv/bin/python

Использование виртуальной среды

Установка пакетов

В активированной среде пакеты, установленные с помощью pip, влияют только на текущую среду:

pip install package_name

Например:

# 安装单个包(如Django)
(.venv) pip install django==3.2.12

# 安装多个包
(.venv) pip install requests pandas

# 安装速度慢?使用国内镜像
(.venv)  pip install django -i https://pypi.tuna.tsinghua.edu.cn/simple

Просмотр установленных пакетов

(.venv) pip list
Package    Version
---------- -------
Django     3.2.12
pip        21.2.4

# 查看某个包的详情
(.venv) pip show django

# 升级包
(.venv) pip install --upgrade pip

Экспорт зависимостей

Использование requirements.txt для записи и воспроизведения окружения проекта — стандартная практика для командной работы:

(.venv) pip freeze > requirements.txt

Пример содержимого файла requirements.txt:

Django==3.2.12
requests==2.26.0
pandas==1.3.3

Установка зависимостей из файла

(.venv) pip install -r requirements.txt

Совет:Добавьте .venv/ в .gitignore и коммитьте только requirements.txt. Виртуальные окружения имеют большой размер и привязаны к пути, поэтому их не следует включать в систему контроля версий.


Деактивация виртуального окружения

Когда вы закончите работу, вы можете деактивировать виртуальное окружение:

deactivate

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


Удаление виртуального окружения

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

# 确保已退出环境
deactivate

Удаление виртуального окружения

Виртуальное окружение — это по сути обычная директория; удаление директории полностью удаляет его:

macOS / Linux

rm -rf .venv

Windows

rmdir /s /q .venv
Примечание: перед удалением выполнитеdeactivateчтобы деактивировать окружение; в противном случае текущая оболочка сохранит недействительные переменные окружения.

Пример реального проекта

Предположим, вы разрабатываете проект Django:

Пример

# 1. Создайте и перейдите в каталог проекта
mkdir my_site && cd my_site

# 2. Создайте и активируйте виртуальное окружение
python3 -m venv .venv
source .venv/bin/activate    # Windows: .venv\Scripts\activate

# 3. Установите Django и зафиксируйте зависимости
(.venv) pip install django==4.2
(.venv) pip freeze > requirements.txt

# 4. Инициализируйте проект Django
(.venv) django-admin startproject config .

# 5. Выполните миграции базы данных и запустите сервер разработки
(.venv) python manage.py migrate
(.venv) python manage.py runserver

# 6. Разработка завершена, деактивируйте окружение
(.venv) deactivate

Продвинутое использование

Указание версии Python

Если у вас установлено несколько версий Python, вы можете указать, какую версию использовать для создания виртуального окружения:

python3.8 -m venv .venv  # 使用 Python 3.8

Создание окружения без pip

python -m venv --without-pip .venv

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

python -m venv --system-site-packages .venv

Часто задаваемые вопросы

1. Почему в моём виртуальном окружении нет скрипта activate?

Убедитесь, что вы используете правильный путь:

  • Windows: Scripts\activate
  • Unix/Linux: bin/activate

2. Как узнать, нахожусь ли я сейчас в виртуальном окружении?

Проверьте, есть ли в приглашении командной строки префикс с именем окружения, или выполните:

which python

3. Установка пакетов выполняется медленно

Используйте отечественное зеркало:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple package_name

Проверьте, находится ли путь к интерпретатору Python внутри каталога виртуального окружения.

4. Можно ли перемещать виртуальное окружение?

Не рекомендуется. Скрипты и файлы конфигурации внутри виртуального окружения содержат жёстко прописанные абсолютные пути, поэтому после перемещения они становятся недействительными. Если миграция необходима, самый простой способ — пересоздать окружение и использоватьrequirements.txtдля восстановления зависимостей.

5. Сколько места занимает виртуальное окружение?

Пустое окружение занимает около 20–50 MB и растёт по мере установки новых пакетов. Проекты в сфере data science (NumPy, Pandas, PyTorch) могут достигать нескольких GB. Полезная привычка — периодически удалять виртуальные окружения, которые больше не используются.


Лучшие практики

  1. Используйте отдельное окружение для каждого проекта: чтобы зависимости из разных проектов не мешали друг другу
  2. Используйте единое соглашение об именовании:.venv: большинство IDE (VS Code, PyCharm) могут автоматически его распознавать
  3. Обновляйте своевременноrequirements.txt: каждый разpip installзатем экспортировать синхронно
  4. Игнорировать виртуальные окружения в системе контроля версий: в.gitignoreдобавьте.venv/
  5. Периодически очищайте заброшенные окружения: чтобы освободить место на диске
  6. Фиксируйте номера версий в продакшене:requirements.txtявно указывать в==версии, избегая случайных обновлений
# .gitignore 推荐配置
.venv/
__pycache__/
*.pyc
.env
*.egg-info/
Другие расширения