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

Jump to content
From ArchWiki
< Python (Русский)
Состояние перевода: На этой странице представлен перевод статьи 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.

### Пакеты

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

- Python 3.3+: python
- Python 3: python-virtualenv

Для Pipenv:

- Python 3: python-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].

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

- Python venv
- Пакет virtualenv на PyPI
- Документация virtualenvwrapper

Category:

- Programming languages (Русский)