Venv python что это
Питон в коробке – venv в python 3.3
Наверняка, большинство из тех, кто разрабатывает или деплоит Python приложения, использует виртуальные окружения. В частности через virtualenv, написанный Ian Bicking.
Идея оказалась так хороша и распространена, что нечто похожее теперь присутствует в Python 3.3 из коробки в виде модуля venv. Он почти такой же, как virtualenv, только немного лучше.
Как это работает?
Вот и вся суть venv, всё остальное уже обёртка над этим.
Как создать?
Скрипт создаст указанную директорию, вместе со всеми родительскими директориями, если потребуется, и построит виртуальное окружение. Это можно делать и в Windows, только вызов будет чуть более многословным:
При создании можно добавлять различные параметры, как, например, включение системных site-packages или использование symlink вместо копирования интерпретатора.
В отличии от virtualenv новый venv требует чтобы создаваемая директория не существовала, либо была пустой. Вероятно, это сделано, чтобы не допускать конфликтов с существующими файлами. Это бага в python 3.3, в 3.4 уже исправлено. (Спасибо, svetlov).
Как использовать?
Можно использовать старый добрый метод активации через bin/activate (Scripts/activate в windows):
А можно и не использовать, достаточно лишь вызвать интерпретатор из окружения и всё сработает автоматически:
Обновление
Это произойдёт автоматически, если использовать symlink, но если вы хотите кроме изоляции делать фиксацию версии python и библиотек, я бы рекомендовал делать обновление вручную.
Расширение EnvBuilder
Метод описывает суть всего процесса: создание директории ( ensure_directories ), конфигурацию ( create_configuration ), добавление бинарников питона ( setup_python ) и добавление скриптов активации ( setup_scripts ).
Соответственно, для запуска python скрипта внутри окружения, можно сделать:
Исполняемые скрипты внутри venv
Вернёмся к проблеме с исполняемыми скриптами внутри виртуального окружения.
Пример шаблона запускаемого python скрипта:
__VENV_PYTHON__ будет заменено на полный путь к интерпретатору python в виртуальном окружении.
Создание и использование виртуальных сред в Python3.
Модуль venv обеспечивает поддержку создания облегченных «виртуальных сред». Каждая виртуальная среда имеет свой собственный двоичный файл Python и может иметь собственный независимый набор установленных пакетов Python в своих каталогах.
Обычные инструменты установки, такие как setuptools и pip работают в виртуальных средах как и ожидается. Другими словами, когда виртуальная среда активна, они устанавливают пакеты Python в виртуальную среду без необходимости явно указывать это.
Создание виртуальной среды.
Создание виртуальной среды выполняется с помощью команды venv :
В Windows вызовите команду venv следующим образом:
В качестве альтернативы, если настроены переменные PATH и PATHEXT для установки Python:
Для venv может быть задано несколько путей, и в этом случае будет создана идентичная виртуальная среда в соответствии с заданными параметрами для каждого указанного пути.
После создания виртуальной среды ее можно «активировать» с помощью сценария, расположенном каталоге виртуальной среды. Вызов сценария зависит от платформы:
Примечание к таблице: venv должен быть заменен путем к каталогу, содержащему виртуальную среду:
Не нужно специально активировать среду если сценарий запускается с указанием полного пути до интерпретатора Python, установленного в виртуальную среду. Активация просто добавляет каталог виртуальной среды к пути интерпретатора Python тем самым давая возможность запускать сценарии не используя полный путь.
Вы можете «деактивировать» виртуальную среду, набрав команду deactivate в своей оболочке. Точный механизм зависит от платформы и является внутренней деталью реализации. Обычно используется скрипт или функция оболочки.
Примеры:
Установка виртуальной среды в директорию env :
Активация виртуальной среды env :
Установка пакетов в виртуальную среду env :
Выполнение сценариев в виртуальной среде env :
Деактивация виртуальной среды:
Не нужно специально активировать среду если сценарий запускается с указанием полного пути до интерпретатора Python:
Примечания:
Виртуальное окружение в Python
В этой статье мы рассмотрим как используется и для чего нужно виртуальное окружение в Python.
Введение
Виртуальное окружение это изолированная пространство для приложений в Python, которое дает возможность иметь свой набор зависимостей не мешая другим проектам.
Так же оно позволяет задействовать различные версии интерпретатора в нескольких проектах.
Создание окружения в Python выполняется с помощью встроенного модуля venv. Venv — это модуль из стандартной библиотеки не требующий никакой дополнительной установки.
Виртуальное окружение создается под конкретные проекты, для его создания потребуется знать путь до корневого каталога.
Создание директории для проекта
Необходимо выполнить команду в терминале
mkdir test_project создает папку с именем test_project, а cd test_project перемещается в эту директорию.
Это то же самое, что создать пустую папку и открыть ее.
В директории test_project будут храниться все файлы проекта и это будет местом для виртуального окружения.
Создание виртуального окружения
Чтобы создать виртуальную среду, нужно вызвать модуль venv из интерпретатора и указать директорию для служебных файлов.
После выполнения будет готово окружение с версией Python по умолчанию.
.venv — имя окружения. Можно называть как угодно. По совместительству является директорией в которой хранится вся информация окружения.
Если в операционной системе есть несколько версий Python и требование использовать какую – то конкретно, создайте виртуальную среду следующим образом
Активация виртуальной среды
Просто создать виртуальное окружение недостаточно, так же его необходимо активировать
Активация виртуальной среды в Windows
Открываем командную оболочку или powershell, переходим в директорию проекта и выполняем команду
Активация виртуальной среды в macOS и Linux
Достаточно открыть терминал в директории проекта и выполнить команду
Активация виртуальной среды изменит приглашение оболочки, чтобы показать, какую виртуальную среду вы сейчас используете.
Вот и все. Затем вы можете установить, обновить и удалить пакеты с помощью pip. Установленные пакеты будут изолированы только для данного проекта.
Заключение
Сегодня мы рассмотрели как используется и для чего необходимо виртуальное окружение в Python. Если у вас есть дополнительные вопросы, не стесняйтесь задавать их в комментариях.
Установка и использование virtualenv в Python
virtualenv — это инструмент для создания изолированной среды Python. У такой среды есть отдельна установка python, при ее использовании загруженные библиотеки недоступны другим. Можно сделать так, чтобы у этой среды не было доступа к глобальным библиотекам.
Virtualenv — простой и рекомендованный способ настройки среды Python.
Отличия virtualenv и venv
Venv — это пакет, который идет по умолчанию с Python 3.3+. В версии Python 2 его нет.
Virtualenv — более продвинутая библиотека. По ссылке можно ознакомиться с основными отличиями.
Виртуальную среду можно создать и с помощью venv, но все-таки рекомендуется установить и использовать virtualenv для полноценной работы.
Установка virtualenv с помощью pip
Для установки virtualenv с Python нужно использовать pip. Желательно предварительно обновить этот инструмент.
После обновления можно установить и virtualenv:
Создание виртуальной среды
1. Перейдите в директорию, в которой вы хотите создать виртуальную среду(например папка проекта).
Назвать среду можно как угодно
После выполнения команды вы увидите логи:
Эта команда создает локальную копию среды. Работая с ней, важно не забывать об активации, чтобы использовались нужные версии конкретных инструментов и пакетов.
3. Для активации новой виртуальной среды используйте команду:
После этого название текущей среды отобразится слева от символа ввода: (venv_name) username@desctop:
Теперь при установке любого пакета с помощью pip он будет размещаться в папках этой среды, изолированно от глобальной установки.
Деактивации virtualenv
Введите ее и приставка venv_name пропадет. Вы вернетесь к использованию глобально версии python.
Удаление виртуальной среды
Для удаления виртуальной среды достаточно просто удалить папку проекта. Для этого используется следующая команда:
Решение популярных ошибок
Ошибки при создании virtualenv. При попытке создать virtualenv с Python 3.7 могут возникнуть следующие ошибки.
Использование полного пути к виртуальной среде. Может быть такое, что при использовании команды virtualenv будет использована не та версия. Для решения проблемы нужно лишь задать полные пути как к virtualenv, так и к Python в системе.
А получить их можно с помощью этой команды:
venv — Создание виртуальных сред¶
Добавлено в версии 3.3.
Исходный код: Lib/venv/
Модуль venv обеспечивает поддержку создания облегченных «виртуальных сред» с собственными каталогами сайтов, дополнительно изолированными от системных каталогов сайтов. Каждая виртуальная среда имеет собственный Python двоичный файл (который соответствует версии двоичного файла, используемый для создания этой среды) и может иметь собственный независимый набор установленных пакетов Python в каталогах сайта.
Дополнительные сведения о PEP 405 виртуальных средах см. в разделе Python.
Создание виртуальных сред¶
Создание виртуального окружения выполняется с помощью команды venv :
Не рекомендуется, начиная с версии 3.6: pyvenv был рекомендованным инструментом для создания виртуальных сред для Python 3.3 и 3.4, а также запрещён в Python 3.6.
В Windows вызовите команду venv следующим образом:
В качестве альтернативы, если вы настроили переменные PATH и PATHEXT для своей установки Python :
Хотя символические ссылки поддерживаются в Windows, они не рекомендуются. Особо следует отметить, что двойной щелчок python.exe в проводнике файлов быстро разрешит символическую ссылку и проигнорирует виртуальную среду.
См. О политиках исполнения для получения дополнительной информации.
venv можно указать несколько путей, и в этом случае идентичная виртуальная среда будет создана в соответствии с заданными параметрами на каждом предоставленном пути.
После создания виртуальной среды её можно «активировать» с помощью сценария в двоичном каталоге виртуальной среды. Вызов сценария зависит от платформы ( необходимо заменить на путь к каталогу, содержащему виртуальную среду):
Вам не нужно специально активировать среду; активация просто добавляет двоичный каталог виртуальной среды к вашему пути, так что «python» вызывает интерпретатор Python виртуальной среды, и вы можете запускать установленные сценарии без необходимости использовать их полный путь. Однако все сценарии, установленные в виртуальной среде, должны запускаться без её активации и автоматически запускаться с Python виртуальной среды.
Вы можете деактивировать виртуальную среду, набрав «deactivate» в оболочке. Точный механизм зависит от платформы и является внутренней деталью реализации (обычно используется сценарий или функция оболочки).
Добавлено в версии 3.8: Сценарии активации PowerShell, установленные под POSIX для поддержки ядра PowerShell.
Обычные средства установки, такие как setuptools и pip, работают, как и ожидалось, в виртуальных средах. Другими словами, когда виртуальная среда активна, они устанавливают Python пакеты в виртуальную среду без необходимости явного уведомления об этом.
Когда виртуальная среда активна (т.е. выполняется Python интерпретатор виртуальной среды), атрибуты sys.prefix и sys.exec_prefix указывают на базовый каталог виртуальной среды, тогда как sys.base_prefix и sys.base_exec_prefix указывают на невиртуальную среду Python инсталляцию, которая была используемый для создания виртуальной среды. Если виртуальная среда не активна, то sys.prefix совпадает с sys.base_prefix и sys.exec_prefix совпадает с sys.base_exec_prefix (все они указывают на невиртуальную среду Python установки).
class venv. EnvBuilder ( system_site_packages=False, clear=False, symlinks=False, upgrade=False, with_pip=False, prompt=None ) ¶
Класс EnvBuilder принимает следующие аргументы ключевой при создании экземпляра:
Изменено в версии 3.4: Добавлен параметр with_pip
Добавлено в версии 3.6: Добавлен параметр prompt
Создатели сторонних средств виртуальной среды смогут свободно использовать предоставленный класс EnvBuilder в качестве базового класса.
Создать виртуальную среду, указав целевой каталог (абсолютный или относительный к текущему каталогу), который должен содержать виртуальную среду. Метод create создаст среду в указанном каталоге или создаст соответствующее исключение.
Метод create класса EnvBuilder иллюстрирует хуки, доступные для настройки подкласс:
Создает файл конфигурации pyvenv.cfg в среде.
Устанавливает сценарии активации, соответствующие платформе, в виртуальную среду.
Метод-заполнитель, который может быть переопределен в реализациях сторонних производителей для предварительной установки пакетов в виртуальной среде или выполнения других шагов после создания.
Изменено в версии 3.7.2: Windows теперь использует сценарии перенаправителя для python[w].exe вместо копирования фактических двоичных файлов. В 3.7.2 только setup_python() ничего не делает, если не выполняется из построения в исходном дереве.
Кроме того, EnvBuilder предоставляет этот сервисный метод, который можно назвать от setup_scripts() или post_setup() в подклассы, чтобы помочь в установке пользовательских сценариев в виртуальную среду.
install_scripts ( context, path ) ¶
Каталоги могут существовать (при обновлении существующей среды).
Существует также функция удобства на уровне модуля:
venv. create ( env_dir, system_site_packages=False, clear=False, symlinks=False, with_pip=False, prompt=None ) ¶
Создать EnvBuilder с заданными аргументами ключевой и вызовите его метод create() с аргументом env_dir.
Добавлено в версии 3.3.
Изменено в версии 3.4: Добавлен параметр with_pip
Изменено в версии 3.6: Добавлен параметр prompt
Пример расширения EnvBuilder ¶
В следующем сценарии показано, как расширить EnvBuilder путем реализации подкласса, который устанавливает setuptools и pip в созданную виртуальную среду:
Этот сценарий также доступен для онлайн загрузки.