venv Python

Изображение баннера

Введение

Модуль venv поддерживает создание облегченных “виртуальных сред”, каждая из которых имеет свой собственный независимый набор пакетов Python, установленных в каталогах их сайтов.

Виртуальная среда создается поверх существующей установки Python, известной как “базовый” Python виртуальной среды, и при желании может быть изолирована от пакетов в базовой среде, поэтому доступны только те, которые явно установлены в виртуальной среде.

При использовании из виртуальной среды обычные средства установки, такие как pip, будут устанавливать пакеты Python в виртуальную среду без необходимости получения явного указания на это.

Смотрите PEP 405 для получения дополнительной информации о виртуальных средах Python.

Установка

Входит в состав Python3 поэтому обычно не требует установки.

Если вы работаете в WSL типа Debian / Ubuntu установить можно с помощью

sudo apt install python3.10-venv

Создать

Чтобы создать новое окружение выполните

python3 -m venv venv

Вместо venv можете придумать своё имя для окружения.

Обычно для мелких проектов никто не парится и просто в папке с проектом создает окружение venv - у такого подхода есть как плюсы так и минусы.

Если вы работаете в WSL то создавая окружение нужно использовать ту же версию Python, для котороый вы установили venv. Например

sudo python3.10 -m venv ubuntu_venv

Активировать

В Linux чтобы перейти в окружение выполните

source ./venv/bin/activate

В Windows PowerShell нужно выполнить

.\venv\Scripts\activate

Пример PowerShell скрипта, который проверяет активировано ли окружение из текущей директории и если нет то активирует его

If ($env:VIRTUAL_ENV -eq "${PWD}\venv") { Write-Host "venv is already activated" echo $env:VIRTUAL_ENV echo "${PWD}\venv" } Else { echo $env:VIRTUAL_ENV echo "${PWD}\venv" python -m venv venv .\venv\Scripts\activate }

Деактивировать

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

deactivate

Изображение баннера

Выбор версии Python для окружения

Чтобы создать окружение с определённой версией Python используйте команду с указанием версии.

Чтобы это сработало нужно иметь установленный Python данной версии

python3.9 -m venv your_env

Сохранить requirements

python -m pip freeze > requirements.txt

Файл requirements.txt имеет формат

название_пакета==версия

Например

flake8==7.0.0 mccabe==0.7.0 pycodestyle==2.11.1 pyflakes==3.2.0 robotframework==7.0 six==1.16.0 thrift==0.16.0

Установить из requirements.txt

В Linux и Git Bash

python -m pip install -r ./requirements.txt

В Windows

python -m pip install -r .\requirements.txt

requirements из GitHub

В файле requirements.txt можно использовать не только названия пакетов с их версиями, но и ссылки на GitHub репозитории, если эти репозитории оформлены в виде пакетов. Подробнее в статье «pip install из GitHub»

git+https://github.com/AndreiOlegovich/demo_py_package.git

Или с указанием коммита

git+https://github.com/AndreiOlegovich/demo_py_package.git@470a6844f71eb8872174d8fe28629337c3d69fab

Проверка активации

Название окружения может и не появиться в скобках в приглашении терминала.

Чтобы проверить активировалось ли виртуальное окружение или нет - можно выполнить следующие команды

В Linux

python >>> import sys >>> sys.prefix '/home/andrei/pytest/venv' >>> sys.base_prefix '/home/andrei/.pyenv/versions/3.9.5'

В Windows

python >>> import sys >>> sys.prefix 'C:\Users\Andrei\Documents\Projects\venv' >>> sys.base_prefix 'C:\Users\Andrei\AppData\Local\Programs\Python\Python310'

Если sys.prefix отличается от sys.base_prefix значит используется Python из виртуального окружения.

Если вы запускаете скрипт в Pycharm изучите вывод терминала

/home/andrei/pytest/venv/bin/python /home/andrei/pytest/main.py

Process finished with exit code 0

/home/andrei/pytest/venv/bin/python

- это путь до использованного Python

Если бы я запустил скрипт не из виртуального окружения вместо этого пути был бы путь

/usr/bin/python3.8

Автор статьи: Андрей Олегович