Вы инженер по машинному обучению и работаете с 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
Обычно вы всегда предпринимаете следующие шаги:
virtualenv <my_env_name>для создания новой средыsource <my_env_name>/bin/activate, чтобы активировать новую среду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>
Наслаждаться!
Вот и все. Спасибо за прочтение.