Python (Русский)/Virtual environment (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Python/Virtual environment. Дата последней синхронизации: 28 мая 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

virtualenv — это инструмент, используемый для создания изолированного рабочего пространства для приложения Python. Он даёт некоторые преимущества: например, возможность локальной установки модулей, экспорта рабочей среды и выполнения программы Python внутри этого окружения.

Обзор

Виртуальное окружение (virtual environment) — это каталог, в который устанавливаются некоторые исполняемые файлы и скрипты. Среди файлов есть python для выполнения скриптов и pip для установки других модулей в окружении. Также есть скрипты для активации окружения в различных командных оболочках (для bash, csh и fish). По сути, виртуальное окружение имитирует полную системную установку Python и всех необходимых модулей, не вмешиваясь в работу системы, на которой будет запускаться приложение.

В 2017 году был опубликован Pipenv, который управляет всеми вышеперечисленными инструментами: виртуальными окружениями интерпретаторов python, зависимостями пакетов, их активацией и блокировкой версий в Pipfile.

Установка

Python 3.3+ поставляется с модулем venv. Для более старых версий Python можно использовать сторонний инструмент virtualenv.

Пакеты

Установите один из следующих пакетов:

Для Pipenv:

Использование

Все три инструмента похожи.

Создание

Используйте venv или virtualenv для создания виртуального окружения в каталоге вашего проекта. Не забудьте исключить каталог venv из вашей системы контроля версий — для его восстановления достаточно копии pip freeze.

venv

Он входит в состав python (3.3+):

$ python -m venv envname

virtualenv

Доступен в пакете python-virtualenv.

$ virtualenv envname

Активация

Для активации виртуального окружения используйте один из имеющихся скриптов для вашей командной оболочки. Пример для bash:

$ source envname/bin/activate
(envname) $

Теперь команды python и pip будут запускаться и управлять пакетами только внутри виртуального окружения, не затрагивая систему.

Для выхода из виртуального окружения выполните функцию, которую создал скрипт активации:

(envname) $ deactivate

Версии Python

По умолчанию виртуальные окружения создаются с использованием стандартного системного Python. Файл bin/python — это просто символическая ссылка на системный python:

$ ls -l envname/bin/python
lrwxrwxrwx 1 foo foo 15 янв 29 18:48 envname/bin/python -> /usr/bin/python

Если вы хотите использовать другую версию Python внутри виртуального окружения, можно использовать опцию -p/--python у virtualenv:

$ virtualenv -p 3.8 envname
$ ls -l envname/bin/python
lrwxrwxrwx 1 foo foo 18 янв 29 18:48 envname/bin/python -> /usr/bin/python3.8

Также можно использовать pypy3:

$ virtualenv -p pypy3 envname

virtualenvwrapper

virtualenvwrapper позволяет более удобно управлять виртуальными окружениями через командную строку, предоставляя несколько полезных команд для создания, активации и удаления виртуальных окружений. Этот пакет является обёрткой для python-virtualenv.

Установка

Установите пакет python-virtualenvwrapper и добавьте в ~/.bashrc:

export WORKON_HOME=~/.virtualenvs
source /usr/bin/virtualenvwrapper.sh

Строка source /usr/bin/virtualenvwrapper.sh может несколько замедлить запуск новой командной оболочки. Для решения проблемы можно использовать source /usr/bin/virtualenvwrapper_lazy.sh, который загрузит virtualenvwrapper только при первом обращении к нему.

Перезапустите консоль для применения изменений. Каталог WORKON_HOME будет создан автоматически.

Использование

Подробности можно почитать в официальной документации.

Создание виртуального окружения (все опции командной строки, кроме -a, -i, -r и -h, передаются в virtualenv, так что можно использовать опцию -p для выбора нужной версии Python):

$ mkvirtualenv envname

Активация виртуального окружения:

$ workon envname

Установка пакета внутри виртуального окружения (скажем, Django):

(envname) $ pip install django

Выход из виртуального окружения:

(envname) $ deactivate

Pipenv

pipenv упрощает управление через командную строку, предоставляя одну программу, которая выполняет все функции вышеперечисленных инструментов.

Установка

Установите пакет python-pipenv.

Использование

Все команды можно выполнять в папке проекта, и pipenv распознает текущую ситуацию — найдёт виртуальное окружение в текущем каталоге и будет использовать его.

Подробности в документации: [1], [2], [3].

Смотрите также