В этом руководстве вы узнаете о виртуальных средах. Вы узнаете о важности использования виртуальных сред в Python и о том, как начать использовать виртуальные среды.
Что такое виртуальная среда?
Виртуальная среда — это инструмент для поддержки отдельного пространства для проекта с его зависимостями и библиотеками в одном месте. Эта среда специфична для конкретного проекта и не влияет на зависимости других проектов.
Например, вы можете работать над проектом X, который использует версию 1.0 библиотеки Z, а также поддерживать проект Y, который использует версию 2.0 библиотеки Z.
Как работают виртуальные среды?
Инструмент виртуальной среды создает папку в каталоге проекта. По умолчанию папка называется venv
, но вы также можете venv
ее имя. Он хранит исполняемые файлы Python и pip в папке виртуальной среды. Когда виртуальная среда активирована, пакеты, установленные после этого, устанавливаются в папке виртуальной среды проекта.
Начало работы с VirtualEnv
Во-первых, убедитесь, что в вашей системе установлен 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 на странице проекта.
Как только вы закончите работу с виртуальной средой, вы можете отключить ее с помощью следующей команды:
1
|
deactivate
|
Проще отслеживать пакеты
При работе с программами Python вы устанавливаете различные пакеты, необходимые для программы. Вы продолжаете работать, и список установленных пакетов продолжает накапливаться. Теперь приходит время, когда вам нужно отправить код Python на рабочий сервер. К сожалению … Вы действительно не знаете, какие пакеты вы установили для работы программы.
Все, что вы можете сделать, это открыть программу Python и проверить все пакеты, которые вы импортировали в вашу программу, и установить их один за другим.
Виртуальная среда предоставляет более простой способ отслеживания пакетов, установленных в проекте. После активации виртуальной среды она позволяет заблокировать текущее состояние пакетов среды.
Вы можете достичь этого с помощью следующей команды:
1
|
pip freeze > requirements.txt
|
Приведенная выше команда создает файл под названием requirements.txt
котором содержатся сведения о пакетах с версиями в текущей среде. Вот как это выглядит:
Теперь этот файл будет действительно полезен для развертывания проекта на другой платформе, поскольку все зависимости проекта уже находятся в вашем распоряжении в файле require.txt. Чтобы установить зависимости проекта с помощью файла needs.txt, выполните следующую команду:
1
|
pip install -r requirements.txt
|
virtualenvwrapper
чтобы сделать вещи проще
Инструмент 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
|
Теперь команды будут доступны в текущем терминале нажатием клавиши Tab . Создайте новую папку проекта с именем PythonProject
. Перейдите в каталог проекта. Ранее, когда вы использовали virtualenv
, вы сначала создали виртуальную среду, а затем активировали ее. Используя virtualenvwrapper
, вы можете выполнить обе эти задачи с помощью одной команды.
1
|
mkvirtualenv PythonVenv
|
Приведенная выше команда создает виртуальную среду, а затем активирует ее.
Чтобы деактивировать виртуальную среду, вам нужно ввести команду deactivate
.
1
|
deactivate
|
Теперь предположим, что в определенных сценариях вам нужно переключаться между различными виртуальными средами, в которых вы работаете. virtualenvwrapper
предоставляет метод работы для переключения виртуальных сред. Команда для переключения виртуальной среды:
1
|
workon PythonV
|
В приведенной выше команде PythonV
— это имя виртуальной среды. Вот изображение, где команда workon
показана в действии:
virtualenvwrapper
также предоставляет команду для отображения виртуальных сред в вашей среде.
1
|
ls $WORKON_HOME
|
Приведенная выше команда отображает список виртуальных сред, которые существуют в этой среде.
Чтобы удалить существующую виртуальную среду, вы можете использовать команду rmvirtualenv
.
1
|
rmvirtualenv PV
|
Существует команда, которая создает каталог проекта и связанную с ним виртуальную среду. Перейдите к терминалу и выполните следующую команду:
1
|
mkproject NewPro
|
Приведенная выше команда должна создать проект и связанную с ним виртуальную среду.
Есть еще несколько команд, которые вы можете использовать в virtualenvwrapper
. Вы можете найти список доступных команд, введя следующую команду:
1
|
virtualenvwrapper
|
Завершение
В этом уроке вы увидели, как начать использовать виртуальные среды в Python. Вы узнали о важности использования виртуальной среды и о том, как она работает. Вы также взглянули на virtualenvwrapper
, оболочку в инструменте virtualenv
для управления несколькими виртуальными средами.
Вы когда-нибудь использовали виртуальные среды в Python? Дайте нам знать ваши мысли в комментариях ниже.