Статьи

Понимание виртуальных сред в Python

В этом руководстве вы узнаете о виртуальных средах. Вы узнаете о важности использования виртуальных сред в Python и о том, как начать использовать виртуальные среды.

Виртуальная среда — это инструмент для поддержки отдельного пространства для проекта с его зависимостями и библиотеками в одном месте. Эта среда специфична для конкретного проекта и не влияет на зависимости других проектов.

Например, вы можете работать над проектом X, который использует версию 1.0 библиотеки Z, а также поддерживать проект Y, который использует версию 2.0 библиотеки Z.

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

Во-первых, убедитесь, что в вашей системе установлен pip . Вы можете установить pip с помощью следующей команды:

1
sudo apt-get install python-pip python-dev build-essential

Используя pip , установите инструмент виртуальной среды.

1
pip install virtualenv

Чтобы начать использовать virtualenv , вам нужно инициализировать и активировать его. Давайте начнем с создания нового каталога PythonApp Python PythonApp .

1
mkdir PythonApp

Перейдите в каталог проекта PythonApp и инициализируйте виртуальную среду, введя следующую команду:

1
virtualenv PythonAppVenv

Приведенная выше команда настроит виртуальную среду для проекта PythonApp .

Настройка виртуальной среды

Он создает папку с именем PythonAppVenv внутри директории проекта PythonApp . Он хранит исполняемые файлы Python и pip в папке виртуальной среды. Все новые пакеты, установленные для проекта после активации виртуальной среды, помещаются в папку виртуальной среды. Вот структура папок:

Структура папки виртуальной среды

Чтобы начать использовать виртуальную среду, вам нужно активировать ее с помощью следующей команды:

1
source PythonAppVenv/bin/activate

После активации вы сможете увидеть имя PythonAppVenv в левой части PythonAppVenv имени.

Виртуальная среда активирована

Попробуем установить новый пакет в проект PythonApp .

1
pip install flask

Новый пакет должен быть установлен в папке виртуальной среды. Проверьте папку виртуальной среды внутри lib/python2.7/site-packages и вы сможете найти только что установленный пакет flask . Вы можете узнать больше о Flask на странице проекта.

Пакет Flask установлен в виртуальном каталоге

Как только вы закончите работу с виртуальной средой, вы можете отключить ее с помощью следующей команды:

1
deactivate

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

Все, что вы можете сделать, это открыть программу Python и проверить все пакеты, которые вы импортировали в вашу программу, и установить их один за другим.

Виртуальная среда предоставляет более простой способ отслеживания пакетов, установленных в проекте. После активации виртуальной среды она позволяет заблокировать текущее состояние пакетов среды.

Вы можете достичь этого с помощью следующей команды:

1
pip freeze > requirements.txt

Приведенная выше команда создает файл под названием requirements.txt котором содержатся сведения о пакетах с версиями в текущей среде. Вот как это выглядит:

Файл требований

Теперь этот файл будет действительно полезен для развертывания проекта на другой платформе, поскольку все зависимости проекта уже находятся в вашем распоряжении в файле require.txt. Чтобы установить зависимости проекта с помощью файла needs.txt, выполните следующую команду:

1
pip install -r requirements.txt

Инструмент virtualenv действительно полезен для разработчиков. Но это становится действительно сложным, когда вам приходится иметь дело с более чем одной виртуальной средой. Для управления несколькими виртуальными средами существует расширение для инструмента virtualenvwrapper под названием virtualenvwrapper .

virtualenvwrapper — это оболочка для инструмента virtualenv , который предоставляет функциональные возможности для управления несколькими виртуальными средами.

Давайте virtualenvwrapper с установки virtualenvwrapper с помощью pip.

1
pip install virtualenvwrapper

После того, как вы установили virtualenvwrapper , вам нужно установить рабочий каталог, в котором будут храниться виртуальные среды. Выполните следующую команду, чтобы установить рабочий каталог для virtualenvwrapper :

1
export WORKON_HOME=.virtualenvs

Приведенная выше команда устанавливает рабочий каталог для virtualenvwrapper в папку .virtualenvs в домашнем каталоге.

Вы можете либо получить команды virtualenvwrapper для запуска из терминала, либо добавить команды virtualenvwrapper в .bashrc .

1
source /usr/local/bin/virtualenvwrapper.sh
Источник virtualenvwrapper

Теперь команды будут доступны в текущем терминале нажатием клавиши Tab . Создайте новую папку проекта с именем PythonProject . Перейдите в каталог проекта. Ранее, когда вы использовали virtualenv , вы сначала создали виртуальную среду, а затем активировали ее. Используя virtualenvwrapper , вы можете выполнить обе эти задачи с помощью одной команды.

1
mkvirtualenv PythonVenv

Приведенная выше команда создает виртуальную среду, а затем активирует ее.

Активировать виртуальную среду с помощью virtualenvwrapper

Чтобы деактивировать виртуальную среду, вам нужно ввести команду deactivate .

1
deactivate

Теперь предположим, что в определенных сценариях вам нужно переключаться между различными виртуальными средами, в которых вы работаете. virtualenvwrapper предоставляет метод работы для переключения виртуальных сред. Команда для переключения виртуальной среды:

1
workon PythonV

В приведенной выше команде PythonV — это имя виртуальной среды. Вот изображение, где команда workon показана в действии:

Переключение виртуальной среды с помощью Workon Command

virtualenvwrapper также предоставляет команду для отображения виртуальных сред в вашей среде.

1
ls $WORKON_HOME

Приведенная выше команда отображает список виртуальных сред, которые существуют в этой среде.

Перечисление существующих виртуальных сред

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

1
rmvirtualenv PV
Удалить виртуальную среду

Существует команда, которая создает каталог проекта и связанную с ним виртуальную среду. Перейдите к терминалу и выполните следующую команду:

1
mkproject NewPro

Приведенная выше команда должна создать проект и связанную с ним виртуальную среду.

Создать каталог проекта и связанный виртуальный каталог

Есть еще несколько команд, которые вы можете использовать в virtualenvwrapper . Вы можете найти список доступных команд, введя следующую команду:

1
virtualenvwrapper
Список команд, доступных в virtualenvwrapper

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

Вы когда-нибудь использовали виртуальные среды в Python? Дайте нам знать ваши мысли в комментариях ниже.