Вы инженер по машинному обучению и работаете с Python и Jupyter Notebook? В этой статье вы узнаете, зачем нужна виртуальная среда, в чем разница между некоторыми существующими инструментами и как добавить виртуальную среду в Jupyter Notebook.

Вот план статьи:

  • Зачем нужна виртуальная среда?
  • В чем разница между virtualenv, virtualenvwrapper, penv и venv?
  • Создайте виртуальную среду, используя virtualenv
  • Добавить виртуальную среду в блокнот Juypter

Зачем нужна виртуальная среда?

Как и другие языки программирования, Python имеет собственный способ загрузки, хранения и разрешения пакетов (или библиотек). По умолчанию каждый проект Python на вашем компьютере будет использовать каталог Python site-packages по умолчанию (который связан с основной установкой Python и представлен как base (root) среда). Вы можете найти это по:

>>> import site
>>> site.getsitepackages()
['/Users/admin/anaconda3/lib/python3.7/site-packages']

Представьте себе сценарий, в котором вы работаете над двумя проектами машинного обучения, в одном из которых используется TensorFlow v1.5, а в другом - TensorFlow v2. Это было бы настоящей проблемой, поскольку Python не может различать версии в каталоге site-packages. И TensorFlow v1.5, и TensorFlow v2 будут находиться в одном каталоге с тем же именем. Поскольку нет различий между версиями, оба проекта должны будут использовать одну и ту же версию, что в данном случае недопустимо. Здесь в игру вступают инструменты виртуальных сред.

Основная цель виртуальных сред Python - создание изолированной среды для проектов Python. Каждый проект может иметь свои собственные зависимости, независимо от того, какие зависимости есть у каждого другого проекта.

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

Вот несколько популярных библиотек / инструментов для создания виртуальной среды на Python: virtualenv, virtualenvwrapper, pvenv и venv.

Если вы заинтересованы в использовании conda для создания виртуальной среды, вы можете взглянуть на:



Создайте виртуальную среду с помощью« conda и добавьте ее в Jupyter Notebook
Вы используете anaconda и работаете с Jupyter Notebook и Python? В этой статье вы узнаете, как создать виртуальный… medium.com »



В чем разница между virtualenv, virtualenvwrapper, pvenv и venv?

  • virtualenv: самая популярная библиотека для создания изолированной среды Python. Вы можете получить его, запустив pip install virtualenv. Он работает путем создания точной копии двоичного файла интерпретатора Python (python или python3) в локальном каталоге. Активация среды выполняется путем изменения переменной среды PATH, добавляя к ней префикс настраиваемого каталога bin.
  • virtualenvwrapper: набор расширений до virtualenv. Он дает вам такие команды, как mkvirtualenv, lssitepackages и особенно workon для переключения между разными virtualenv каталогами. Этот инструмент очень полезен, если вам нужно несколько virtualenv каталогов.
  • pyvenv: это библиотека, поставляемая с Python 3, но устаревшая в Python 3.6 из-за проблем.
  • venv: это библиотека, поставляемая с Python 3.3+. Вы можете использовать python3 -m venv <path_to_new_env>.. Он служит той же цели, что и virtualenv, и, кроме того, вы можете его расширить.

virtualenv по-прежнему более популярен, чем venv, тем более что первый поддерживает как Python 2, так и 3. Общая рекомендация для новичков заключается в том, чтобы начать с изучения virtualenv и pip, которые работают как с Python 2, так и с 3. И в различных ситуациях выберите другие инструменты, как только они вам начнутся.

Создайте виртуальную среду с помощью «virtualenv»

Установите virtualenv

Проверьте, есть ли у вас virtualenv

which virtualenv

Если нет, введите в свой терминал следующее, чтобы установить его.

pip install virtualenv

Создайте виртуальную среду

Чтобы создать виртуальную среду в текущем каталоге:

virtualenv <my_env_name>

Вот пример создания виртуальной среды «nlp» в текущем каталоге «/ Users / admin / Code / WorkSpace / python-venv /».

⇒  virtualenv nlp
Using base prefix '/Users/admin/anaconda3'
New python executable in /Users/admin/Code/WorkSpace/python-venv/nlp/bin/python
Installing setuptools, pip, wheel...
done.

Создайте среду с определенной версией Python

Вы также можете использовать интерпретатор Python по вашему выбору (например, python2.7).

virtualenv -p /usr/bin/python2.7 <my_env_name>

Создайте среду из файла requirements.txt

Обычно вы всегда предпринимаете следующие шаги:

  1. virtualenv <my_env_name> для создания новой среды
  2. source <my_env_name>/bin/activate, чтобы активировать новую среду
  3. pip install -r requirements.txt для установки требований в текущей среде

В качестве альтернативы вы можете рассмотреть возможность использования pipenv, который сочетает в себе pip и virtualenv.

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

Вы можете активировать виртуальную среду, выполнив следующую команду:

source <my_env_name>/bin/activate

Вот пример активации «nlp»:

⇒  pwd
/Users/admin/Code/WorkSpace/python-venv
⇒  source nlp/bin/activate
⇒  which python
/Users/admin/Code/WorkSpace/python-venv/nlp/bin/python

Деактивировать виртуальную среду

Чтобы деактивировать текущую среду, вы можете ввести:

deactivate

Проверьте, в какой среде вы находитесь

Вы можете быстро проверить, находитесь ли вы в среде, запустив which python или which pip, которые вернут путь к исполняемому файлу python в среде, если все прошло хорошо:

⇒  which python
/Users/admin/Code/WorkSpace/python-venv/nlp/bin/python
⇒  which pip
/Users/admin/Code/WorkSpace/python-venv/nlp/bin/pip

Удалить среду

Чтобы удалить среду, убедитесь, что вы деактивировали ее, затем cd в каталог среды и введите

sudo rm -rf <my_env_name>

Добавить виртуальную среду в Jupyter Notebook

Убедитесь, что ядро ​​IPython доступно, но вам нужно вручную добавить ядро ​​с другой версией Python или виртуальной средой.

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

Затем установите ipykernel, который предоставляет ядро ​​IPython для Jupyter:

Затем вы можете добавить свою виртуальную среду в Jupyter, набрав:

python -m ipykernel install --user --name=<my_env_name>

Например: добавьте виртуальную среду «nlp» в Jupyter, и она должна напечатать следующее:

⇒  python -m ipykernel install --user --name=nlp
Installed kernelspec nlp in /Users/admin/Library/Jupyter/kernels/nlp

После этого вы можете cd зайти в папку env и проверить файл конфигурации kernel.json

Теперь вы можете выбрать среду в качестве ядра в Jupyter Notebook. Вот как это будет выглядеть:

Удалите виртуальную среду из Jupyter Notebook

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

⇒  jupyter kernelspec list
Available kernels:
  d2l        /Users/admin/Library/Jupyter/kernels/d2l
  nlp        /Users/admin/Library/Jupyter/kernels/nlp
  ...

Теперь, чтобы удалить ядро, вы можете ввести:

jupyter kernelspec uninstall <my_env_name>

Наслаждаться!

Вот и все. Спасибо за прочтение.