Виртуальное окружение Python (venv): создание и активация
Как создать виртуальное окружение Python командой python -m venv, активировать его в Windows, macOS и Linux, исправить ошибку PowerShell и работать с pip.
Содержание · 11 разделов
- Зачем нужно виртуальное окружение
- Как создать виртуальное окружение Python
- Что внутри папки .venv
- Если в Linux venv не создаётся
- Как активировать виртуальное окружение
- Ошибка PowerShell: «выполнение сценариев отключено в этой системе»
- Работа без активации
- Как выйти из виртуального окружения: deactivate
- pip внутри venv: установка пакетов
- requirements.txt: как перенести окружение на другой компьютер
- Как выбрать интерпретатор venv в VS Code
- Как удалить виртуальное окружение
- venv, virtualenv, conda или uv
- Частые вопросы
- Как понять, что окружение активировано?
- Установил пакет, но при импорте ModuleNotFoundError
- Нужно ли создавать окружение заново после обновления Python?
- Можно ли переименовать или переместить папку .venv?
- Можно ли использовать в venv пакеты, установленные глобально?
- Итог
Виртуальное окружение Python (venv) — это отдельная папка со своим интерпретатором и своим набором библиотек для одного проекта. Пакеты, установленные в окружение, не попадают в системный Python и не конфликтуют с другими проектами: в одном может стоять Django 5.2, в другом — Django 6.1.
Быстрый ответ — создать и активировать окружение в папке проекта:
python -m venv .venv # Windows (или: py -m venv .venv)
python3 -m venv .venv # macOS и Linux
.venv\Scripts\activate # Windows, cmd
.venv\Scripts\Activate.ps1 # Windows, PowerShell
source .venv/bin/activate # macOS и Linux
Ниже — подробности по каждой системе, ошибка ExecutionPolicy в PowerShell, работа с pip, VS Code и requirements.txt.
Зачем нужно виртуальное окружение
Без окружения все библиотеки ставятся в один общий Python. Проблемы начинаются со второго проекта:
- проектам нужны разные версии одной библиотеки, а в системе может стоять только одна;
- непонятно, какие пакеты нужны конкретному проекту, —
requirements.txtполучается «грязным»; - в Linux системный Python используют утилиты ОС, и установка пакетов в него может их сломать (в свежих Debian и Ubuntu pip прямо запрещает это ошибкой
externally-managed-environment).
Правило простое: одно окружение на один проект, папка окружения лежит внутри проекта и не попадает в git.
Как создать виртуальное окружение Python
Модуль venv входит в стандартную библиотеку Python 3, ничего ставить не нужно. Откройте терминал в папке проекта и выполните:
# Windows
python -m venv .venv
# или через лаунчер, если команда python не находится
py -m venv .venv
# macOS и Linux
python3 -m venv .venv
Последний аргумент — имя папки. Чаще всего используют .venv или venv: так их узнают VS Code, PyCharm и шаблоны .gitignore. Если Python ещё не установлен, начните с инструкции как установить Python.
Окружение создаётся для той версии Python, которой вы запустили команду. В Windows нужную версию можно выбрать через лаунчер py:
py -0 # список установленных версий
py -3.12 -m venv .venv # окружение на Python 3.12
Проверить, какая версия используется, поможет статья как узнать версию Python.
Что внутри папки .venv
.venv/
├── pyvenv.cfg # путь к базовому интерпретатору и версия
├── Include/
├── Lib/site-packages/ # сюда pip ставит пакеты (в Linux: lib/python3.12/site-packages)
└── Scripts/ # в macOS и Linux — bin/
├── activate # для Git Bash
├── activate.bat # для cmd
├── Activate.ps1 # для PowerShell
├── deactivate.bat
├── pip.exe
└── python.exe
В Windows интерпретатор окружения лежит в .venv\Scripts\python.exe, в macOS и Linux — в .venv/bin/python. Этот путь пригодится для настройки IDE.
Если в Linux venv не создаётся
В Debian и Ubuntu модуль venv вынесен в отдельный пакет. Без него команда завершится ошибкой со словами ensurepip is not available. Установите пакет, который предлагает само сообщение, например:
sudo apt install python3-venv
# или для конкретной версии: sudo apt install python3.12-venv
Как активировать виртуальное окружение
Активация меняет переменную PATH в текущем окне терминала: команды python и pip начинают указывать на окружение. Признак успешной активации — имя окружения в скобках в начале строки приглашения: (.venv).
| Система и терминал | Команда активации |
|---|---|
| Windows, cmd | .venv\Scripts\activate |
| Windows, PowerShell | .venv\Scripts\Activate.ps1 |
| Windows, Git Bash | source .venv/Scripts/activate |
| macOS, Linux (bash, zsh) | source .venv/bin/activate |
| fish | source .venv/bin/activate.fish |
Пример в PowerShell:
PS C:\projects\shop> .venv\Scripts\Activate.ps1
(.venv) PS C:\projects\shop> python -c "import sys; print(sys.executable)"
C:\projects\shop\.venv\Scripts\python.exe
Активация действует только в текущем окне терминала. Открыли новую вкладку — активируйте окружение снова.
Ошибка PowerShell: «выполнение сценариев отключено в этой системе»
Самая частая проблема в Windows. При запуске Activate.ps1 PowerShell отвечает:
.venv\Scripts\Activate.ps1 : File C:\projects\shop\.venv\Scripts\Activate.ps1 cannot be loaded because running
scripts is disabled on this system. For more information, see about_Execution_Policies at
https:/go.microsoft.com/fwlink/?LinkID=135170.
At line:1 char:1
+ .venv\Scripts\Activate.ps1
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : SecurityError: (:) [], PSSecurityException
+ FullyQualifiedErrorId : UnauthorizedAccess
В русской Windows текст такой: «Невозможно загрузить файл …\Activate.ps1, так как выполнение сценариев отключено в этой системе. Для получения дополнительных сведений см. about_Execution_Policies». Причина — политика выполнения PowerShell по умолчанию запрещает запуск скриптов .ps1. Решения, от более аккуратного к постоянному:
# 1. Разрешить скрипты только в текущем окне (сбросится после закрытия)
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
# 2. Разрешить локальные скрипты для вашего пользователя (постоянно)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Права администратора для -Scope CurrentUser не нужны. Третий вариант — не трогать политику и активировать окружение из cmd (.venv\Scripts\activate) или вообще обойтись без активации (см. ниже).
Работа без активации
Активация нужна только для удобства. Интерпретатор окружения можно вызывать по полному пути, результат будет тем же:
.venv\Scripts\python.exe manage.py runserver # Windows
.venv/bin/python manage.py runserver # macOS и Linux
Так обычно запускают скрипты в планировщике задач, cron и CI.
Как выйти из виртуального окружения: deactivate
deactivate
Команда одинакова для всех систем и терминалов. Приставка (.venv) исчезнет, python снова будет указывать на системный интерпретатор. Закрытие окна терминала тоже «деактивирует» окружение.
pip внутри venv: установка пакетов
В новом окружении есть только pip:
(.venv) $ python -m pip list
Package Version
------- -------
pip 25.0.1
Устанавливайте пакеты после активации — они попадут в .venv, а не в системный Python:
python -m pip install --upgrade pip
python -m pip install django requests
Форма python -m pip надёжнее голого pip: она гарантирует, что пакет поставится именно для того интерпретатора, который вы запускаете. Подробно команды разобраны в статье pip в Python: установка, обновление и основные команды, а сценарии установки библиотек — в материале как установить библиотеку в Python.
Убедиться, что вы внутри окружения, можно так:
import sys
print(sys.prefix != sys.base_prefix) # → True внутри venv
print(sys.executable) # путь к python.exe окружения
requirements.txt: как перенести окружение на другой компьютер
Папку .venv не копируют и не коммитят: внутри неё прописаны абсолютные пути, после переноса или переименования она перестаёт работать. Вместо этого сохраняют список пакетов:
python -m pip freeze > requirements.txt
Файл содержит точные версии:
certifi==2026.7.22
charset-normalizer==3.5.2
idna==3.20
requests==2.34.2
urllib3==2.8.0
На другой машине (или после клонирования репозитория) окружение восстанавливается тремя командами:
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
python -m pip install -r requirements.txt
Добавьте папку окружения в .gitignore проекта (с Python 3.13 venv и сам кладёт в папку окружения файл .gitignore, но строка в общем файле нужна для окружений, созданных старыми версиями и другими инструментами):
.venv/
venv/
Как выбрать интерпретатор venv в VS Code
- Откройте папку проекта (
File → Open Folder). - Нажмите
Ctrl+Shift+P(на macOS —Cmd+Shift+P) и выберите команду Python: Select Interpreter. - Укажите интерпретатор из
.venv— обычно VS Code находит его сам и помечает как рекомендуемый. Если его нет в списке, выберите Enter interpreter path и укажите.venv\Scripts\python.exe(macOS/Linux —.venv/bin/python).
После этого кнопка запуска, отладчик и подсказки используют окружение, а новый терминал VS Code по умолчанию активирует его автоматически. В PyCharm то же самое делается в настройках проекта: Settings → Project → Python Interpreter → Add Interpreter.
Как удалить виртуальное окружение
Отдельной команды нет: окружение — это просто папка. Выйдите из него (deactivate) и удалите каталог:
rmdir /s /q .venv # Windows, cmd
Remove-Item -Recurse -Force .venv # Windows, PowerShell
rm -rf .venv # macOS и Linux
Если окружение сломалось (например, вы обновили или переустановили Python), проще всего удалить папку и создать окружение заново из requirements.txt.
venv, virtualenv, conda или uv
| Инструмент | Что это | Когда выбирать |
|---|---|---|
venv | Стандартный модуль Python 3, ставить не нужно | По умолчанию для большинства проектов |
virtualenv | Сторонний пакет, из которого вырос venv; создаёт окружения быстрее и гибче настраивается | Если нужны его дополнительные возможности |
| conda | Менеджер окружений и пакетов (в том числе не-Python) из Anaconda/Miniconda | Data Science, библиотеки с C/Fortran-зависимостями |
| uv | Быстрый менеджер пакетов и окружений на Rust: uv venv, uv pip install | Когда важна скорость установки и управление проектом одной утилитой |
Для учёбы и типичных проектов на Django или FastAPI встроенного venv достаточно. Окружения, созданные uv venv, имеют ту же структуру и активируются теми же командами, но pip в них по умолчанию нет — пакеты ставят через uv pip install.
Частые вопросы
Как понять, что окружение активировано?
В начале строки терминала появляется (.venv). Надёжная проверка — python -c "import sys; print(sys.executable)": путь должен вести в папку .venv. В Windows также можно выполнить where python (cmd) — первым в списке будет .venv\Scripts\python.exe.
Установил пакет, но при импорте ModuleNotFoundError
Пакет установлен в одно окружение, а код запускается другим интерпретатором — например, в IDE выбран системный Python. Проверьте sys.executable в скрипте и интерпретатор в VS Code или PyCharm. Все причины разобраны в статье про ModuleNotFoundError: No module named.
Нужно ли создавать окружение заново после обновления Python?
Для новой минорной версии (например, 3.13 → 3.15) — да: окружение привязано к конкретному интерпретатору. Удалите .venv, создайте его новой версией и установите пакеты из requirements.txt. После патч-обновления (3.15.0 → 3.15.1) окружение обычно продолжает работать.
Можно ли переименовать или переместить папку .venv?
Нет: скрипты активации и pyvenv.cfg содержат абсолютные пути. После переноса создайте окружение заново.
Можно ли использовать в venv пакеты, установленные глобально?
Можно, если создать окружение с флагом --system-site-packages: тогда из него видны библиотеки базового Python, а новые пакеты всё равно ставятся в .venv. Это удобно, когда тяжёлые библиотеки уже установлены системно, но зависимости проекта становятся менее предсказуемыми, поэтому по умолчанию флаг не используют.
python -m venv --system-site-packages .venv
Итог
Создайте окружение командой python -m venv .venv, активируйте его подходящей для вашего терминала командой и устанавливайте пакеты через python -m pip. Список зависимостей храните в requirements.txt, а саму папку .venv — вне git. Следующий шаг — установка библиотек через pip и запуск Python-скриптов; весь кластер собран в разделе «Установка и окружение».
- #Python
- #venv
- #Виртуальное окружение
- #pip
- #VS Code