Приветствую, друзья!
Сегодня у нас краткая заметка про 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