Вы инженер по машинному обучению и работаете с 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>
Наслаждаться!
Вот и все. Спасибо за прочтение.