Создание виртуальных окружений Python (venv)
Виртуальное окружение — это изолированное пространство выполнения Python с собственным интерпретатором, установленными пакетами и конфигурацией, полностью изолированное от общесистемного окружения.
Виртуальное окружение Python — это независимая среда выполнения Python, позволяющая создавать изолированные окружения Python для разных проектов на одной машине.
Разные проекты могут выполняться параллельно в своих собственных виртуальных окружениях, не мешая друг другу.
У каждого виртуального окружения есть свои:
- Интерпретатор Python
- Установленные пакеты/библиотеки
- Переменные среды
Виртуальные окружения дают каждому проекту собственное пространство зависимостей, полностью устраняя конфликты версий.
Зачем нужны виртуальные окружения
- Изоляция проектов: разные проекты могут использовать разные версии 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модуль, дополнительная установка не требуется.
Рабочий процесс использования
Обзор рабочего процесса
Проверьте версию 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:
Пример
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. Полезная привычка — периодически удалять виртуальные окружения, которые больше не используются.
Лучшие практики
- Используйте отдельное окружение для каждого проекта: чтобы зависимости из разных проектов не мешали друг другу
- Используйте единое соглашение об именовании:
.venv: большинство IDE (VS Code, PyCharm) могут автоматически его распознавать - Обновляйте своевременно
requirements.txt: каждый разpip installзатем экспортировать синхронно - Игнорировать виртуальные окружения в системе контроля версий: в
.gitignoreдобавьте.venv/ - Периодически очищайте заброшенные окружения: чтобы освободить место на диске
- Фиксируйте номера версий в продакшене:
requirements.txtявно указывать в==версии, избегая случайных обновлений
# .gitignore 推荐配置 .venv/ __pycache__/ *.pyc .env *.egg-info/Другие расширения