PDA

Просмотр полной версии : Как настроить виртуальное окружение Python


subscribe1
01.07.2026, 13:40
Введение

Если работаешь с Python хоть чуть-чуть серьёзнее, то наверняка уже сталкивался с виртуальными окружениями. И даже если нет — всё равно рано или поздно придётся. Виртуальное окружение — это не просто красивая опция, а реально необходимый инструмент, который помогает держать проекты в порядке, не лезть друг другу в зависимости и не превращать систему в сплошной хаос из разных версий библиотек. Но вот не всё так просто — есть свои особенности, которые могут сбить с толку, особенно если сразу пытаться работать по гайдам, рассчитанным на «продвинутых». В этом сообщении хочу подробно рассказать, как всё правильно настраивать, на что смотреть и как избежать типичных ошибок.

Что такое виртуальное окружение и зачем оно нужно

Виртуальное окружение — это, грубо говоря, копия интерпретатора Python с собственной «песочницей» для библиотек. Когда ты создаёшь виртуальное окружение, оно будет независимо от системного Python и его пакетов. Представь, что каждая твоя папка с проектом живёт в своей маленькой коробочке — туда можно ставить именно те версии библиотек, которые нужны конкретно этому проекту, не боясь, что они конфликтуют с другими проектами или обновлениями в системе.

Зачем вообще заморачиваться с этим? Потому что Python-проекты часто зависят от конкретных версий библиотек. Например, твой старый скрипт может требовать Django 2.2, а новый — уже на Django 4.0. Если ставить всё «на глобал», со временем библиотечные версии начнут путаться, и это будет приводить к странным ошибкам, которые иногда очень тяжело диагностировать.

Где это пригодится

- При разработке. Когда параллельно работаешь над несколькими проектами.
- На сервере, чтобы иметь одинаковое окружение на разных машинах без конфликтов.
- При тестировании и экспериментах с новыми библиотеками.
- На образовательных курсах, чтобы все участники работали в одинаковом настройках и ничему не мешали.
- Даже если хочешь просто быстро попробовать какую-то библиотеку без риска «засорить» систему.

Как создать и активировать виртуальное окружение — простая инструкция для всех ОС

Для начала — что надо знать. В Python 3.3+ стандартным инструментом для виртуалок является модуль venv. До этого часто использовали отдельный инструмент virtualenv, но сегодня venv — это нативный вариант.

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

В терминале или командной строке зайди в папку своего проекта и выполните:

python3 -m venv venv

Здесь python3 можно заменить на python, если у вас так вызывается Python 3. Важно, чтобы версия была 3.3 или выше. Название «venv» — просто удобная конвенция, можно назвать как угодно (например, env, .venv), но хорошо, чтобы папка была скрыта или исключена из контроля версий (.gitignore), чтобы не засорять репозиторий.

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

- Windows (cmd):

venv\Scripts\activate.bat

- Windows (PowerShell):

venv\Scripts\Activate.ps1

Здесь стоит иметь в виду, что по умолчанию PowerShell может блокировать выполнение скриптов, и нужно изменить политику выполнения (например, на RemoteSigned) или запускать с правами администратора.

- Linux/Mac:

source venv/bin/activate

Когда окружение активируется, обычно в командной строке появляется приставка с названием окружения (например, (venv)), что визуально помогает не забыть, что ты в виртуалке.

Что делать дальше

После активации устанавливай библиотеки через pip, например:

pip install requests

Эта библиотека установится именно в виртуальное окружение, и её не будет касаться системный питон. Увидеть список установленных пакетов можно командой:

pip list

Чтобы выйти из виртуального окружения, просто напиши:

deactivate

Нюансы и частые проблемы

1. Что если в системе несколько версий Python?

В таком случае нужно указывать, какой именно интерпретатор использовать. Можно делать так:

python3.8 -m venv venv38

или даже полный путь:

/usr/bin/python3.8 -m venv venv38

2. Проблемы с активацией в PowerShell

Если при попытке activate.ps1 возникает ошибка об Execution Policy, нужно запустить PowerShell от имени администратора и прописать:

Set-ExecutionPolicy RemoteSigned

Это даст разрешение на запуск локальных скриптов.

3. Привязка к системному пакету pip

Иногда виртуальное окружение создаётся без pip. Тогда нужно его явно установить:

python -m ensurepip --upgrade

или переустановить виртуальное окружение.

4. Ошибки при импортировании библиотек

Чаще всего это следствие того, что виртуальное окружение не активировано, а ты пытаешься запускать скрипт в системном питоне. Либо пакет установлен не в виртуалку.

5. Путь к python внутри виртуалки

Если хочешь запускать скрипты без активации окружения, можно использовать путь к python внутри venv, например:

./venv/bin/python your_script.py

6. Не забывай про .gitignore

Не коммить папку с виртуальным окружением в репозиторий. Обычно в .gitignore добавляют venv/ или .venv/

Практические примеры использования

Пример 1. Работа над веб-проектом с Flask

Создаёшь папку, включаешь виртуалку, ставишь flask:

python3 -m venv venv
source venv/bin/activate
pip install flask

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

Пример 2. Тестирование разных версий библиотеки

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

python3 -m venv venv_old
source venv_old/bin/activate
pip install somepackage==1.0.0

deactivate

python3 -m venv venv_new
source venv_new/bin/activate
pip install somepackage==2.0.0

Запускаешь тесты, сравниваешь результат.

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

- Проверил версию Python (python --version)
- Убедился, что установлен pip (pip --version)
- Создал папку проекта
- Запустил команду создания окружения (python3 -m venv venv)
- Активировал виртуалку согласно ОС
- Проверил, что в командной строке появился префикс с названием окружения
- Установил необходимые библиотеки
- Проверил установленные пакеты (pip list)
- Добавил папку окружения в .gitignore
- При работе в PowerShell проверил политику выполнения

Типичные ошибки и к чему они приводят

- Забыл активировать виртуалку — работаешь в глобальном Python, ставишь пакеты в систему и получаешь конфликты.
- Запустил скрипт из системы, а не из окружения — импорт резко может не найти нужные библиотеки.
- Попытался создать окружение с Python 2 — venv не поддерживается, нужно использовать virtualenv.
- Забыл изменить Execution Policy в PowerShell — неактивируемое окружение.
- Положил папку виртуалки в репозиторий — мусор в git и увеличенный размер репы.
- Устанавливаешь библиотеки глобально и в виртуальной среде одновременно — путаница, сложно понять, где что лежит.

FAQ

Вопрос: Можно ли использовать virtualenv вместо venv?
Ответ: Можно, virtualenv старше и независим, но сегодня venv встроен и отлично работает. virtualenv иногда полезен, если нужен Python ниже 3.3 или больше кастомизации.

Вопрос: Как сделать так, чтобы окружение активировалось автоматически?
Ответ: Можно настроить оболочку — например, в bash или zsh запускать source venv/bin/activate при заходе в каталог. Есть также инструменты типа direnv, которые помогают автоматически подгружать окружения.

Вопрос: Можно ли создавать виртуальные окружения для проектов на Python 2?
Ответ: Для Python 2 venv не работает, используется virtualenv. Но Python 2 уже deprecated, так что рекомендуем сразу переходить на Python 3.

Вопрос: Что делать, если нужно несколько разных версий Python на одном компьютере?
Ответ: Устанавливать их параллельно, и создавать виртуальные окружения с явным указанием нужного интерпретатора, как я показал выше через полный путь или python3.8 -m venv.

Вопрос: Почему после активации окружения в Windows появляется ошибка с активацией через PowerShell?
Ответ: Скорее всего, нужно изменить Execution Policy, потому что Windows блокирует выполнение скриптов по умолчанию.

Вопрос: Как сохранить зависимости проекта?
Ответ: Используйте команду pip freeze > requirements.txt, чтобы сохранить список пакетов, и потом pip install -r requirements.txt для восстановления.

В общем, виртуальные окружения — это мастхэв для любого Python-разработчика. Пока не привыкнешь — будет казаться сложным, но как только наладишь процесс, работа станет гораздо проще и приятнее. Если кто-то встречал ещё какие-то странности или хочет добавить свои лайфхаки — давайте обсуждать!