Приветствую, друзья!

Сегодня у нас краткая заметка про VirtualEnv - инструмент для создания изолированной среды окружения Python.

Зачем вообще нужна изолированная среда окружения? Всё просто. В рамках одной версии Python можно иметь только одну установленную версию любого модуля. Вы не можете установить, скажем, модуль requests сразу 1.0.0 и 2.28.1 версий.

Когда это может быть нужно? Когда у вас разные проекты разработаны с использованием разных версий модуля. Причём, эти версии могли выбирать даже не вы, а авторы каких-то библиотек, которые вы использовали. То есть, у вас не всегда есть возможность относительно просто изменить какой-то свой проект, чтобы в нём использовалась та же версия модуля, что и в другом.

И вот здесь на помощь приходит VirtualEnv (сокращённо - venv). У вас появляется для каждого проекта создать свою изолированную среду окружения, в которой вы сможете установить именно те версии модулей, что нужны в этом проекте.

Установим venv

pip install virtualenv

Создадим изолированную среду

virtualenv my_project
# или
venv my_project
# или
python3 -m venv my_project

Когда мы создаём изолированную среду, в текущей папке создаётся папка проекта с изолированной средой (my_project). Если у вас уже есть проект, то после создания среды просто скопируйте его в новую папку.

Активируем изолированную среду окружения

source my_project/bin/activate

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

pip install requests raven
python3 -u test.py
pip freeze > requirements.txt

Деактивируем среду после работы

deactivate

Если нам нужно всего лишь запустить свой код в рамках имеющейся изолированной среды (например, unit-тесты), сделать это можно в одну строку.

source my_project/bin/activate; python3 -u test.py; deactivate