Перейти к содержимому

Как установить библиотеку в jupiter notebook

  • автор:

Действия с библиотеками в образах Jupyter Server

В каждом образе Jupyter Server и базовом образе для задач обучения есть предустановленный набор библиотек (см. Список образов для Jupyter Server , Библиотеки в базовых образах для деплоев ).

В инструкции описано, как узнать, какие библиотеки установлены, как установить и обновить библиотеки.

Получение списка библиотек, установленных в образе Jupyter Server

Чтобы увидеть список библиотек, установленных в образе Jupyter Server:

  1. Создайте или подключитесь к уже существующему Jupyter Notebook.
  2. В ячейке Jupyter Notebook выполните следующую команду:

pip list

Получение списка библиотек, установленных в базовом образе

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

Установка дополнительных библиотек в Jupyter Server

Для установки дополнительных библиотек выполните команду в ячейке ноутбука:

!pip install

Где package_name — наименование библиотеки, которую предполагается установить, а version — версия данной библиотеки.

После установки библиотеки выполните следующую команду для проверки:

!pip list | grep

В Jupyter Server есть каталоги, в которых хранятся служебные и пользовательские файлы:

  • /home/user — каталог, уникальный для каждого Jupyter Server.
  • /home/jovyan — каталог, общий для всех Jupyter Server, созданных в рамках одного воркспейса.

Если устанавливать библиотеки с помощью команды pip install , то зависимости будут установлены в каталог /home/jovyan/.img-xxxxx .

При постановке Jupyter Server на паузу этот каталог остается, при остановке (удалении) каталог удаляется. При удалении Jupyter Server все библиотеки, которые установлены с помощью команды pip install , удаляются вместе с каталогом /home/user .

Для использования требуемого набора библиотек можно создать и использовать кастомный Docker-образ. Подробнее см. Способ 1. Обучение из Jupyter Server с GPU .

Jupyter Server называется test-img-dir , в нем командой pip install glances установили библиотеку. Установленная библиотека с требуемыми зависимостями будет находиться в каталоге /home/jovyan/.imgenv-test-img-dir-0/lib/python3.7/site-packages .

Обратите внимание на то, что в образ Jupyter Server jupyter-cuda10.1-tf2.3.0-gpu можно дополнительно установить библиотеку DeepSpeed. Для этого:

  1. Создайте или подключитесь к уже существующему Jupyter Notebook.
  2. Запустите командную строку ( New → Terminal ).
  3. Выполните команду ниже. Библиотека установится в соответствующий каталог.
cd /tmp && git clone https://github.com/microsoft/DeepSpeed.git && cd DeepSpeed && \ pip install cpufeature && \ DS_BUILD_SPARSE_ATTN=1 DS_BUILD_CPU_ADAM=1 /tmp/DeepSpeed/install.sh

Установка дополнительных библиотек в базовый образ

Пользователи могут установить дополнительные библиотеки в базовые образы. Для сборки таких кастомных образов используются средства функции client_lib . Подробнее см. Способ 1. Обучение из Jupyter Server с GPU .

Обновление версий библиотек в Jupyter Server

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

pip install --upgrade

Ранее установленная версия библиотеки обновится.

Пример переустановки версии torch приведен ниже.

pip install --no-cache-dir torch===1.5.0+cu101 torchvision==0.6.0+cu101 -f https://download.pytorch.org/whl/torch_stable.html

Не рекомендуется менять версию базовых пакетов — Horovod, TensorFlow, Apex, MXNet, TensorBoard, KServe, PyTorch.

Обновление версий библиотек в базовых образах

Для обновления версий библиотек, установленных в базовом образе, внесите модули и их версии в файл requirements.txt и соберите кастомный образ с использованием этого файла. Подробнее см. Способ 1. Обучение из Jupyter Server с GPU .

Актуализация списка библиотек в базовых образах

Список базовых образов и версий предустановленных библиотек в данных образах может периодически обновляться (См. Образы для Jupyter Server ). Пользователи могут получить перечень актуальных версий библиотек. Для этого необходимо выполнить последовательность действий, описанную ниже.

  1. Создайте или подключитесь к уже существующему Jupyter Notebook.
  2. Выберите подключение к Jupyter Notebook или JupyterLab. Рабочий каталог, из которого будут запускаться файлы, — /home/jovyan/ .
  3. Создайте в рабочем каталоге файл test.py следующего содержания:

import subprocess if __name__ == '__main__': cmd = 'pip freeze' subprocess.run(cmd, shell=True) 
import client_lib 
job = client_lib.Job(base_image='your base image', script = '/home/jovyan/test.py', n_workers=1, instance_type='your isntance_type', processes_per_worker=1 ) 

Для получения значения instance_type воспользуйтесь инструкцией .

job.submit() 
import time while True: job.logs() time.sleep(5) 
  • Создать Jupyter Server
  • Образы для Jupyter Server
  • Образы для деплоев
  • Образы для задач обучения

Библиотеки Python с областью действия записной книжки

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

Библиотеки, область действия которых ограничена записной книжкой, не сохраняются в сеансах. Необходимо переустанавливать библиотеки, область действия которых ограничена записной книжкой, в начале каждого сеанса или при отсоединении записной книжки от кластера.

Databricks рекомендует использовать магическую %pip команду для установки библиотек Python с область записной книжкой.

Записные книжки, запланированные в качестве заданий, можно использовать %pip в записных книжках. Если вам нужно управлять средой Python в записной книжке Scala, SQL или R, используйте магическую %python команду в сочетании с %pip .

При работе с установками библиотеки область записной книжки может возникнуть больше трафика на узел драйвера. Узнайте, насколько большой узел драйвера должен быть при работе с библиотеками записных книжек область?.

Чтобы установить библиотеки для всех записных книжек, подключенных к кластеру, используйте библиотеки кластера. Дополнительные сведения см. в статье Библиотеки кластера.

В Databricks Runtime 10.5 и ниже можно использовать служебную программу библиотеки Azure Databricks. Программа библиотеки поддерживается только в Databricks Runtime, а не Databricks Runtime ML. См. служебную программу библиотеки (dbutils.library).

Управление библиотеками с помощью команд %pip

Команда %pip эквивалентна команде pip и поддерживает тот же API. В следующих разделах приведены примеры использования команд %pip для управления средой. Для получения дополнительной информации об установке пакетов Python с использованием pip см. документацию по установке pip и связанные с ней страницы.

  • Начиная с команд Databricks Runtime 13.0 %pip не перезапускать процесс Python автоматически. Если вы устанавливаете новый пакет или обновляете существующий пакет, может потребоваться использовать dbutils.python.restartPython() для просмотра новых пакетов. См . статью «Перезапуск процесса Python» в Azure Databricks.
  • В Databricks Runtime 12.2 LTS и ниже Databricks рекомендует размещать все %pip команды в начале записной книжки. Состояние записной книжки сбрасывается после выполнения любой команды %pip , которая изменяет среду. Если вы создаете методы или переменные Python в записной книжке, а затем используете команды %pip в более поздней ячейке, эти методы или переменные не сохраняются.
  • Обновление, изменение или удаление основных пакетов Python (например, IPython) с помощью %pip может привести к тому, что некоторые функции перестанут работать должным образом. При возникновении таких проблем сбросьте среду, отключив и повторно присоединив записную книжку или перезапустив кластер.

Установка библиотеки с помощью %pip

%pip install matplotlib 

Установка пакета колес Python с помощью %pip

%pip install /path/to/my_package.whl 

Удаление библиотеки с помощью %pip

Вы не можете удалить библиотеку, включенную в заметки о выпуске Databricks Runtime, версии и совместимость или библиотеку, установленную в качестве библиотеки кластера. Если установлена версия библиотеки, отличная от версии, входящей в Databricks Runtime или установленной в кластере, можно использовать %pip uninstall для возврата библиотеки к версии по умолчанию в Databricks Runtime или версии, установленной в кластере, но нельзя использовать команду %pip для удаления версии библиотеки, входящей в Databricks Runtime или установленной в кластере.

%pip uninstall -y matplotlib 

Параметр -y является обязательным.

Установка библиотеки из системы управления версиями с помощью %pip

%pip install git+https://github.com/databricks/databricks-cli 

Вы можете добавить параметры в URL-адрес, чтобы указать такие элементы, как версия или подкаталог Git. Для получения дополнительной информации и примеров использования других систем управления версиями см. Поддержка VCS.

Установка частного пакета с учетными данными, управляемыми секретами Databricks с помощью %pip

PIP поддерживает установку пакетов из частных источников с помощью базовой аутентификации, включая закрытые системы управления версиями и закрытые репозитории пакетов, такие как Nexus и Artifactory. Управление секретами доступно через API секретов Databricks, который позволяет хранить маркеры и пароли аутентификации. Используйте DBUtils API для доступа к секретам из записной книжки. Обратите внимание, что в магических командах можно использовать $variables .

Чтобы установить пакет из частного репозитория, укажите URL-адрес репозитория с параметром —index-url до %pip install или добавьте его в файл конфигурации pip в ~/.pip/pip.conf .

token = dbutils.secrets.get(scope="scope", key="key") 
%pip install --index-url https://:$token@.com/ == --extra-index-url https://pypi.org/simple/ 

Аналогичным образом можно использовать управление секретами с помощью магических команд для установки частных пакетов из систем управления версиями.

token = dbutils.secrets.get(scope="scope", key="key") 
%pip install git+https://:$token@.com/ 

Установка пакета из DBFS с помощью %pip

С помощью %pip можно установить частный пакет, сохраненный в DBFS.

При отправке в DBFS файл автоматически переименовывается, заменяя пробелы, точки и дефисы символами подчеркивания. Для файлов pip колес Python требуется, чтобы имя файла использовало периоды в версии (например, 0.1.0) и дефисы вместо пробелов или подчеркивания, поэтому эти имена файлов не изменяются.

%pip install /dbfs/mypackage-0.0.1-py3-none-any.whl 

Установка пакета из тома с помощью %pip

С помощью Databricks Runtime 13.2 и более поздних версий можно установить %pip частный пакет, сохраненный в томе.

При отправке файла в том он автоматически переименовывает файл, заменяя пробелы, точки и дефисы подчеркиванием. Для файлов pip колес Python требуется, чтобы имя файла использовало периоды в версии (например, 0.1.0) и дефисы вместо пробелов или подчеркивания, поэтому эти имена файлов не изменяются.

%pip install /Volumes////mypackage-0.0.1-py3-none-any.whl 

Установка пакета, хранящегося в виде файла рабочей области с помощью %pip

С помощью Databricks Runtime 11.3 LTS и более поздних версий можно установить %pip частный пакет, сохраненный в виде файла рабочей области.

%pip install /Workspace//mypackage-0.0.1-py3-none-any.whl 

Сохранение библиотек в файле требований

%pip freeze > /dbfs/requirements.txt 

Все подкаталоги в пути к файлу должны уже существовать. Выполнение команды %pip freeze > /dbfs//requirements.txt завершится ошибкой, если каталог /dbfs/ еще не существует.

Использование файла требований для установки библиотек

Файл требований содержит список пакетов к установке с помощью pip . Пример использования файла требований:

%pip install -r /dbfs/requirements.txt 

См. Формат файла требований для получения дополнительной информации о requirements.txt файлах.

Насколько большой узел драйвера должен быть при работе с библиотеками записных книжек область?

Использование библиотек с областью записной книжки может привести к большему объему трафика на узел драйвера, так как он работает для согласования среды между узлами исполнителя.

При использовании кластера с 10 или более узлами в Databricks рекомендуется использовать следующие спецификации в качестве минимальных требований для узла драйвера:

  • Для узла кластера ЦП 100 используйте Standard_DS5_v2.
  • Для узла кластера GPU 10 используйте Standard_NC12.

Для кластеров большего объема используйте узел драйвера большего размера.

Можно ли использовать %sh pip , !pip или pip ? Что такое разница?

%sh и ! выполните команду оболочки в записной книжке; прежнее — это вспомогательное магическое действие Databricks, а последнее — функция IPython. pip — это сокращенное значение %pip при включении автомагии , которое используется по умолчанию в записных книжках Python Для Azure Databricks.

В Databricks Runtime 11.0 и более поздних версиях %pip , %sh pip , и !pip устанавливают библиотеку как библиотеку Python с областью действия записной книжки. В Databricks Runtime 10.4 LTS и ниже Databricks рекомендует использовать только библиотеки %pip pip с область записной книжкой. Поведение %sh pip и !pip не согласовано в Databricks Runtime 10.4 LTS и ниже.

Известные проблемы

  • В Databricks Runtime 10.3 и более ранних версий библиотеки с областью действия записной книжки несовместимы с заданиями пакетной потоковой передачи. Вместо них рекомендуется использовать библиотеки кластера или ядро IPython.

Автоматический импорт библиотек в IPython или Jupyter Notebook

Если вы — частый пользователь IPython или Jupyter Notebooks и вам надоело постоянно импортировать одни и те же библиотеки, то попробуйте этот способ:

  1. Перейдите к ~/.ipython/profile_default
  2. Создайте папку startup , если она отсутствует
  3. Добавьте новый файл Python под названием start.py
  4. Добавьте файлы, которые нужно импортировать
  5. Запустите IPython или Jupyter Notebook, и необходимые библиотеки загрузятся автоматически!

Рассмотрим каждый шаг визуально. Размещение start.py :

import pandas as pd
import numpy as np

# Pandas options
pd.options.display.max_columns = 30
pd.options.display.max_rows = 20

from IPython import get_ipython
ipython = get_ipython()

# If in ipython, load autoreload extension
if 'ipython' in globals():
print('\nWelcome to IPython!')
ipython.magic('load_ext autoreload')
ipython.magic('autoreload 2')

# Display all cell outputs in notebook
from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'

# Visualization
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode
init_notebook_mode(connected=True)
import cufflinks as cf
cf.go_offline(connected=True)
cf.set_config_file(theme='pearl')

print('Your favorite libraries have been loaded.')

При запуске сессии IPython появится следующее:

Проверить, загружены ли библиотеки, можно в globals() :

globals()['pd']globals()['np']

Теперь можно использовать интерактивную сессию без набора команд для загрузки этих библиотек! Этот способ также работает в Jupyter Notebook.

Примечания

  • Файл может иметь любое название ( start.py легче запомнить), а startup/ может содержать несколько файлов. При запуске IPython они выполняются в лексикографическом порядке.
  • При использовании этого способа с Jupyter Notebook ячейка с импортированными файлами отсутствует, поэтому при совместном использовании записной книжки скопируйте содержимое start.py в первую ячейку. Таким образом, другие пользователи могут увидеть, какие библиотеки вы используете.
  • При работе на нескольких компьютерах нужно повторить эти действия. Обязательно используйте один и то же сценарий start.py , чтобы импортировать те же самые файлы!
  • Также посмотрите официальную документацию

Этот способ избавит вас от лишних действий при начале работы с IPython и поможет создать более эффективную рабочую среду.

Создание и настройка портативной сборки Jupyter Notebook и Lab на Windows. Часть 1

Всем привет. Когда я начинал изучение Python, устанавливал впервые Jupyter Notebook, потом пытался передать с созданное в нём приложение на предприятие, я часто сталкивался с различными проблемами. То кириллица в имени пользователя мешает, то настройки не перенеслись, то ещё чего-то. Все эти проблемы я преодолел в основном самостоятельно, используя Google и затратив немало времени на их решение.

По мере роста опыта я научился создавать папку, в которой лежит переносимое с одного компьютера на другой виртуальное окружение Python, настройки Jupyter и Matplotlib, портативные программы (ffmpeg и др.) и шрифты. Я мог написать дома программу, скопировать всю эту папку на компьютер предприятия, и быть уверенным, что ничего не потеряется и не сломается на ровном месте. Потом я подумал, что такую папку можно дать и новичку в Python, и он получит полностью настроенную и переносимую среду.

Оглавление

  • Введение
  • Краткая инструкция по созданию портативной сборки Jupyter
  • Установка Miniconda (Python 3.7)
  • Создание структуры каталогов
  • Создание переносимого виртуального окружения Python
    • Создание виртуального окружения с помощью conda
    • Исправление ошибки HTTP 000 CONNECTION FAILED при создании виртуального окружения
    • Активация виртуального окружения
    • Установка пакетов Python в виртуальном окружении
    • Выход из виртуального окружения Python
    • Настройка переменных окружения для Jupyter, IPython и Matplotlib
    • Создание файла для запуска Jupyter с настройками пользователя
    • Дополнительные файлы для выполнения служебных действий

    Введение

    В последние годы Python стал популярным языком программирования. Его часто используют для написания математических расчётов, анализа больших данных, машинного обучения и построения нейросетей. После появления конструкций asinc и await стало возможным написания быстрых веб-фреймворков. Производительность Python постепенно повышается из релиза в релиз, а использование Cython или Numba может сделать приложение даже более быстрым, чем на других языках программирования. Например, скорость работы веб-фреймворка Vibora (en) сопоставима со скоростью работы решений на Go (en) . В 2018 году Python официально стал языком для изучения в школах и вузах Франции (en) и Казахстана (en) . В России как минимум некоторые кафедры перешли на Python, например, кафедра РК-6 (ru) в МГТУ им. Н.Э. Баумана.

    Приступая к изучению Python, новые пользователи порой сталкиваются с трудностями при установке необходимых библиотек и настройке среды программирования. Если имя пользователя Windows содержит не латинские символы, некоторые библиотеки могли не установиться или не запускаться. У начинающих пользователей могут возникать проблемы с настройкой Jupyter Notebook на локальном компьютере. Если он установлен на диске C:\ , как открыть файл на диске D:\ ? Когда я делал первые шаги в Python, мне тоже приходилось преодолевать эту трудности.

    Наконец, если все проблемы позади, могут возникнуть трудности передать приложение другому пользователю. Я сталкивался с ситуацией, когда созданное мною виртуальное окружение для Python отказывалось работать на другом компьютере. Кроме того, Jupyter Notebook и Matplotlib хранят свои настройки в папке пользователя, что усложняет перенос приложений, использующих специфичные настройки.

    Решением описанных выше проблем будет создание полностью портативной сборки Jupyter Notebook и/или Jupyter Lab на Windows. Она хранит в себе интерпретатор Python, его библиотеки и настройки, настройки всех необходимых сторонних библиотек, включая Matplotlib и Jupyter, не привязано к имени пользователя и не будет ругаться, если вы запустите её на другом компьютере. Мы можем упаковать такую сборку в архив, либо написать скрипт или программу, которая создаст такую же сборку на компьютере абсолютного новичка. Более продвинутым пользователям портативная сборка может быть полезна тем, что она позволяет хранить окружение Python и настройки библиотек в разных местах. Вы можете разместить папку с настройками в специальное место, которое синхронизируется с облачным хранилищем: Dropbox, облако Mail.ru*, Яндекса или Google. За счёт этого на всех компьютерах автоматически получится локально работающая среда с одинаковыми настройками.

    *Да, то самое, клиент которого под Linux больше не коннектится (ru) . Если уберут аналогичный под Windows, мне придётся искать замену. 1 Тб на дороге бесплатно не валяется.

    Для простоты восприятия материала я решил описать создание портативной сборки под Windows. Но эта инструкция с минимальными изменениями годится для создания сборки на Linux и Mac OS. Статья в первую очередь предназначена для новичков, поэтому я постарался описать как можно подробнее и проще для восприятия.

    Статья состоит из двух частей. В первой части мы создадим портативную сборку, во второй займёмся настройками для Jupyter Notebook, Jupyter Lab, IPython и Matplotlib.

    Краткая инструкция по созданию портативной сборки Jupyter

    1. Создайте папку C:\Dev . В ней будут установлены Minconda и портативная сборка Jupyter*.
      *Здесь и далее Jupyter = Jupyter Notebook + Juputer Lab.
    2. Скачайте инсталлятор Miniconda с сайта https://conda.io/miniconda (en) . Выберите Python 3 для Windows 64 бит или 32 бит в зависимости от разрядности вашей операционной системы. Установите Miniconda в папку C:\Dev\Miniconda3 .
    3. Создайте следующую структуру каталогов для портативной сборки Jupyter:
    C:\ Dev\ Jupyter\ dist\ apps\ conf\ backup\ ipython\ jupyter\ matplotlib\ fonts\ projects\
    C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes python=3 conda

    *Вы можете использовать канал conda-forge для установки более свежих библиотек, добавив аргумент -c conda-forge :

    C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda
    C:\Dev\Jupyter\dist\pyenv3.7-win64\Scripts\activate pip --no-cache-dir install numpy scipy matplotlib jupyter jupyterlab

    Примечание: если вам необходимо установить Numpy и Scipy, которые используют библиотеку MKL от Intel для ускорения расчётов, используйте (en) intel-numpy вместо numpy и intel-scipy вместо scipy (устанавливается только в Python 3.6!):

    pip --no-cache-dir install intel-numpy intel-scipy matplotlib jupyter jupyterlab

    После установки выполните:

    conda.bat deactivate

    *Если возникнут ошибки при установке, попробуйте так:

    C:\Dev\Jupyter\dist\pyenv3.7-win64\Scirpts\activate conda config --add channels conda-forge conda install numpy scipy matplotlib jupyter jupyterlab

    и после окончания установки

    conda.bat deactivate
    @echo off set conf_path=%~dp0\conf set JUPYTER_CONFIG_DIR=%conf_path%\jupyter set JUPYTER_DATA_DIR=%conf_path%\jupyter\data set JUPYTER_RUNTIME_DIR=%conf_path%\jupyter\data\runtime set IPYTHONDIR=%conf_path%\ipython set MPLCONFIGDIR=%conf_path%\matplotlib REM Matplotlib search FFMPEG in PATH variable only! set PATH=%~dp0\apps\ffmpeg\bin;%PATH%
    @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-notebook.exe --notebook-dir=%1
    @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-lab.exe --notebook-dir=%1
    @echo off REM Enable extension in Jupyter Notebook. REM Example: REM enable_extension.bat widgetsnbextension call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-nbextension.exe enable %1
     C:\Dev\Miniconda3\Scripts\conda.exe clean --all

    Установка Miniconda (Python 3.7)

    Давайте создадим в корне диска C:\ папку Dev . В этой папке я складываю все программы и инструменты для разработки, которые почему-то предпочитают устанавливаться не в C:\Program Files . Например, туда я устанавливаю Ruby, Go, Python, Jupyter, Msys, SQLite Studio и т.д.

    Сначала нам необходимо установить Python. У Python есть две ветки: Python 2 и Python 3. Python 2 поддерживается (en) до 2020 года, поэтому будем ставить только Python 3.

    Для установки Python 3 обычно обращаются к официальному сайту python.org (en) , откуда скачивают его и устанавливают. Однако мы хотим получить переносимую сборку, поэтому поступим иначе: мы скачаем и установим Miniconda.

    Что такое Miniconda? По факту это Python с предустановленным и настроенным менеджером пакетов conda . Консольная программа conda позволит нам создать папку, в которой будет Python нужной нам версии вне зависимости от того, какая версия Python идёт в составе Miniconda. Также с помощью conda в эту папку можно установить практически все известные библиотеки для Python: Numpy, Scipy, Matplotlib, Sympy и т.д. Папка, в которую установлен Python и его библиотеки, называется виртуальным окружением. Библиотеки для Python поставляются в форме специальных архивов, которые называются пакетами.

    У conda есть отличительные особенности, из-за которой она удобна и для начинающих и опытных пользователей:

    • Пакеты Python, которые устанавливаются через conda, уже скомпилированы под Windows. Меньше вероятность, что попытка установить его завершится ошибкой*.
    • Вы можете создать виртуальное окружение с той версией Python, которая вам нужна. Не имеет значения, какая версия Python установлена с Miniconda.

    *Надо отметить, что ситуация с установкой пакетов в Python из года в год улучшается. Несколько лет назад я не смог установить Numpy через pip (выдавалась ошибка), и я использовал conda . В 2018 году я попробовал последнюю версию pip , и скачался файл с расширением .whl (так называемое «колесо») с уже скомпилированным Numpy, и всё установилось прекрасно.

    Итак, нам нужно скачать и установить Miniconda. Для этого пройдём на https://conda.io/miniconda (en) и выберем 64-битную версию для Windows на Python 3. Если у вас 32-битных компьютер, вам следует скачать 32-битную версию.

    Miniconda ставится так же, как и обычное Windows приложение:

    1. Запускаем инсталлятор, жмём Next
      01
    2. Соглашаемся с лицензионным соглашением I Agree
      02
    3. Я предпочитаю установку для всех пользователей, потому что это даст мне возможность указать путь для установки. Выбираем пункт «All users»:
      03
    4. Корректируем путь для установки на C:\Dev\Miniconda3 :
      04
    5. Здесь я ставлю оба флажка. Флажок «Add Anaconda to the system PATH environment variable» сделает команду conda доступной в терминале из любого каталога. Если вы этот флажок не поставите, единственное, что изменится, это то, что в терминале вместо conda вам понадобится набрать полный путь к conda.exe . Я не устанавливаю Anaconda, потому что она мне ставит много чего лишнего, поэтому я игнорирую нежелательность установки данного флажка. Если вы поставите этот флажок, а после установки передумаете, вы можете просто удалить conda из системных переменных. Это просто. Но если не знаете, можете загуглить или спросить. Контакты в конце статьи.
      Я также ставлю флажок «Register Anaconda as the system Python 3.7». Если какой-то программе вдруг понадобится Python, она будет использовать Python, установленный вместе с Miniconda. Также данный флажок сделает команду python доступной в терминале из любой папки. Данный флажок желательно поставить, если до этого вы не устанавливали Python. Если уже какой-то Python установлен, я бы не советовал ставить этот флажок сейчас, а скорректировать системные переменные при необходимости.
      После этого нажимаем Install и начнётся процесс установки:
      05
    6. Во время установки можете нажать Show details. Тем самым вы увидите больше информации о том, что именно происходит во время установки. Но это не обязательно.
    7. Когда установка закончится, появится фраза «Completed», а кнопка Next станет доступной. Жмём Next
      07
    8. В последнем окне нам предлагается узнать про Anaconda Cloud (это первый флажок) и как начать работу с Anaconda (второй флажок). Мне ничего из этого не нужно, поэтому я снимаю все флажки и нажимаю Finish. Установка Miniconda завершена.
      08

    После установки Miniconda в папке C:\Dev мы увидим новую папку Miniconda весом примерно 340 Мб. Да, это немало, и она ещё будет раздуваться. Позже я покажу, как быстро и безопасно уменьшать её объём.

    Зайдём в папку Miniconda . Немного прокрутив список файлов, мы увидим python.exe . Тот самый Python 3.7, который установился в моём случае (на скриншоте Directory Opus).

    09

    Если дважды кликнуть по python.exe — запустится консольное окно, в котором можно вводить команды Python.

    10

    Вы можете для теста после >>> ввести:

    import antigravity

    и нажать Enter. Откроется браузер по умолчанию с комиксом про Python на xkcd.

    В папке C:\Dev\Miniconda\Scripts мы найдём conda.exe . Эта та самая консольная команда, с помощью которой мы будем создавать виртуальное окружение Python.

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

    Теперь у нас всё готово для того, чтобы начать создание портативной сборки Jupyter Notebook. Для начала создадим следующую структуру каталогов:

    C:\ Dev\ Jupyter\ dist\ apps\ conf\ backup\ ipython\ jupyter\ matplotlib\ fonts\ projects\

    В папке Dev создайте папку Jupyter . В свою очередь в папке Jupyter создайте папки dist и projects . В папке dist будет виртуальное окружение Python со всеми необходимыми библиотеками, файлы настроек, дополнительные программы, шрифты — всё, что необходимо для нашей разработки на Python в среде Jupyter Notebook или Jupyter Lab. Папка projects — это место по умолчанию для проектов. Сам я эту папку обычно не использую, и она остаётся пустой. Но если мне понадобится передать программу другому пользователю вместе с настроенным Jupyter, я положу свою программу в эту папку projects , сделаю архив всей папки Jupyter и отправлю архив пользователю.

    Папка apps содержит вспомогательные программы. Например, я часто кладу туда портативную версию FFMPEG, которая нужная Matplotlib для создания анимации.

    Папка conf содержит настройки различных библиотек. В нашем случае для IPython, Jupyter и Matplotlib.

    В папку conf\backup я кладу копии своих файлов настроек на случай, если в будущем где-то напортачу с настройками.

    Папка fonts содержит шрифты, которые могут быть использованы, например, в Matplotlib. Лично мне понравились Roboto и PTSerif.

    Кроме папок apps , conf и fonts вы можете создать и другие папки на своё усмотрение. Например, папку temp для временных файлов.

    Создание переносимого виртуального окружения Python

    Создание виртуального окружения с помощью conda

    Откройте командную строку (+R → cmd.exe → Enter) и введите*:

    C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes python=3 conda

    *Для установки более свежих версий библиотек можно подключить канал conda-forge через аргумент -c conda-forge :

    C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda

    Если потом понадобится удалить канал conda-forge , зайдите в Проводнике в папку %userprofile% , найдите в ней файл .condarc , откройте его блокнотом и удалите строку conda-forge .

    Рассмотрим эту команду. Сначала идёт полный путь к conda.exe . Если при установке Minconda вы поставили галочку «Add Anaconda to the system PATH environment variable», вместо полного пути достаточно написать просто conda .

    Слово create даёт команду создания нового окружения. Аргумент -p говорит о том, что это окружение должно быть создано там, где мы укажем, а не в папке C:\Dev\Miniconda3\envs . В примере прописан полный путь и название будущей папки pyenv3.7-win64 (расшифровка: python 3.7 environment for Windows 64-bit). Если у вас командная строка открыта в папке dist или вы с помощью команды cd заранее перешли в эту папку, вместо полного пути можно было написать просто pyenv3.7-win64 .

    Аргумент —copy сообщает conda , что в виртуальном окружении должны быть установлены сами пакеты. В противном случае пакет будет установлен в папке C:\Dev\Miniconda3 , а в виртуальном окружении будет ссылка на него. Вы не заметите эту подмену, пока не попробуете запустить виртуальное окружение на другом компьютере.

    Далее идёт перечисление пакетов. Прежде всего мы должны установить сам Python третьей версии. Также я обязательно указываю conda . Т.е. программа conda будет установлена дважды: в составе Miniconda и в виртуальном окружении. Установка conda в виртуальном окружении увеличивает его размер совсем чуть-чуть, но даст возможность пользователю обновить пакеты в виртуальном окружении на компьютере, где Miniconda не установлена. Это делает виртуальное окружение полностью автономным. Вы можете даже деинсталлировать Miniconda после создания виртуального окружения, и оно продолжит работать как ни в чём не бывало. Я, правда, оставляю Miniconda на тот случай, если какому-то приложению понадобится Python.

    Вообще, кроме Python и conda можно было сразу указать необходимые пакеты, но в 2018 году я перестал так делать и вместо этого стал использовать для установки пакетов pip . Во-первых, новейшие версии pip стали скачивать .whl файлы с уже скомпилированными библиотеками, и проблемы с установкой ряда библиотек исчезли. Во-вторых, размер виртуального окружения при установке пакетов через pip получается в 3 раза меньше, чем при установке пакетов через conda .

    Исправление ошибки HTTP 000 CONNECTION FAILED при создании виртуального окружения

    У одного из пользователей при выполнении команды

    C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda

    столкнулся с ошибкой следующего содержания:

    > C:\Users\Asus>C:\Dev\Miniconda3\Scripts\conda.exe create -p C:\Dev\Jupyter\dist\pyenv3.7-win64 --copy --yes -c conda-forge python=3 conda Collecting package metadata: failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your way. SSLError(MaxRetryError('HTTPSConnectionPool(host=\'conda.anaconda.org\', port=443): Max retries exceeded with url: /conda-forge/win-64/repodata.json (Caused by SSLError("Can\'t connect to HTTPS URL because the SSL module is not available."))'))

    Мне потребовался не один час, чтобы разобраться с ней, потому что на первый взгляд проблема либо с некорректной установкой Miniconda либо с сетью. У некоторых корпоративных пользователей действительно был заблокирован этот ресурс, но проблема происходила у пользователя дома. Переустановка Miniconda не помогла.

    В итоге оказалось, что данная ошибка означает, что conda.exe не нашло файл openssl.exe . В итоге было применено следующее решение:

    1. Создали папку C:\Dev\openssl .
    2. В папке C:\Dev\Miniconda3\pkgs нашли папку, название которой начинается с openssl . Например, openssl-1.1.1a-he774522_0 . Если папок несколько, выбираем ту, у которой в названии номер больше.
    3. В найденной папке ищем файл openssl.exe и копируем openssl.exe и все файлы и папки, которые лежат вместе с openssl.exe , в C:\Dev\openssl .
    4. В Проводнике Windows заходим в «Этот компьютер» (где перечисляются все диски на компьютере). В свободном месте правым кликом мыши открываем контекстное меню и выбираем в самом низу пункт «Свойства».
    5. В открывшемся окне находим «Дополнительные параметры системы»:
      1549300231528
    6. На вкладке «Дополнительно» находим кнопку Переменные среды:
    7. Для Windows 7 и 8: в разделе «Переменные среды для пользователя» дважды кликаем по переменной Path . Если в конце строки отсутствует точка с запятой, поставим её, и в конце этой строки допишем:

    C:\Dev\openssl;


    Для Windows 10: в разделе «Переменные среды для пользователя» дважды кликаем по переменной Path . В итоге должно появиться такое окно:

    Нажимаем кнопку «Создать» и вставляем путь C:\Dev\openssl .

  • Закройте и откройте командную строку снова. Теперь всё должно работать. Если вдруг не заработало — надо гуглить ошибку или обращаться на форумы.
  • Активация виртуального окружения

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

    13

    После создания виртуального окружения установим пакеты через pip . Сначала необходимо активировать виртуальное окружение. Для этого в окне команд введите:

    C:\Dev\Jupyter\dist\pyenv3.7-win64\Scripts\activate

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

    Слово (base) в начале строки как указывает на то, что мы вошли в нужное нам виртуальное окружение.

    Установка пакетов Python в виртуальном окружении

    Теперь можно установить пакеты*:

    pip --no-cache-dir install numpy scipy matplotlib jupyter jupyterlab

    Аргумент —no-cache-dir сообщает pip , что не следует кешировать скачанные пакеты. Это позволит нам не увеличивать размер папки виртуального окружения.

    *Существует разработанная Intel библиотека MKL (Math Kernel Library) (en) , которая ускоряет работу на больших данных для популярных библиотек Python, в частности, Numpy и Scipy. Если вы хотите установить Numpy и Scipy, которые используют MKL, следует использовать (en) intel-numpy вместо numpy и intel-scipy вместо scipy :

    pip --no-cache-dir install intel-numpy intel-scipy matplotlib jupyter jupyterlab

    У меня получилось установить intel-numpy и intel-scipy только в виртуальном окружении с Python 3.6. Если вы хотите использовать Numpy и Scipy с MKL в окружении с Python 3.7, необходимо использовать команду:

    conda install numpy scipy

    Если вы не уверены, что ставить, используйте просто numpy и scipy .

    Если в процессе установки через pip возникнут ошибки, попробуйте установить проблемные пакеты через conda . Пример:

    conda install numpy scipy matplotlib jupyter jupyterlab

    Выход из виртуального окружения Python

    После того, как установка завершена, необходимо выйти из виртуального окружения. Для этого в командной строке наберите*:

    conda.bat deactivate

    *Раньше я набирал просто deactivate , но это почему-то устарело, и надо набирать conda.bat deactivate . Даже conda deactivate будет неправильно.

    Подготовка портативной сборки Jupyter к запуску

    Создадим несколько .bat файлов, которые будут заставят Jupyter и Matplotlib хранить настройки в папке dist\config , а также будут управлять запуском Jupyter Notebook и Jupyter Lab.

    Настройка переменных окружения для Jupyter, IPython и Matplotlib

    Каталоги размещения настроек определяются переменными среды Windows. Изменив эти переменные, мы заставим Jupyter и Matplotlib хранить свои файлы там, где это нужно именно нам. В папке C:\Dev\Jupyter\dist создайте файл setenv.bat следующего содержания:

    @echo off set conf_path=%~dp0\conf set JUPYTER_CONFIG_DIR=%conf_path%\jupyter set JUPYTER_DATA_DIR=%conf_path%\jupyter\data set JUPYTER_RUNTIME_DIR=%conf_path%\jupyter\data\runtime set IPYTHONDIR=%conf_path%\ipython set MPLCONFIGDIR=%conf_path%\matplotlib REM Matplotlib search FFMPEG in PATH variable only! set PATH=%~dp0\apps\ffmpeg\bin;%PATH%

    Разберём, что делается в этом файле.

    Команда @echo off необходима для того, чтобы в командной строке не выводилось сообщение при выполнении каждой строки нашего файла.

    Команда set создаёт переменную. Конструкция %~dp0 означает полный путь к setenv.bat . Обратите внимание, что пробелов до и после знака = быть не должно.

    Затем мы настраиваем переменные для Jupyter:

    • JUPYTER_CONFIG_DIR — папка для файлов конфигурации Jupyter (документация (en) ),
    • JUPYTER_DATA_DIR — папка для устанавливаемых файлов данных (расширения и ядра ( kernel ) для Jupyter) (документация (en) ),
    • JUPYTER_RUNTIME_DIR — папка для исполняемых файлов Jupyter ( runtime files ) (документация (en) ),
    • IPYTHONDIR — папка для файлов конфигурации IPython (документация (en) ),
    • MPLCONFIGDIR — папка, где Matplotlib хранит свои настройки и кэш (документация (en) ).

    Если вы планируете создавать анимации с Matplotlib, вам понадобится FFMPEG (ru) . Я скачиваю (en) zip архив FFMPEG, распаковываю его содержание C:\Dev\Jupyter\dist\apps\ffmpeg .

    Строка, которая начинается с REM — комментарий. Matplotlib почему-то ищет FFMPEG только в %PATH% . Я записываю путь к FFMPEG в начало %PATH , а не в его конец, чтобы при поиске первым нашёлся тот FFMPEG, который я положил в dist\apps .

    Создание файла для запуска Jupyter с настройками пользователя

    В папке C:\Dev\Jupyter\dist создайте файл run_jupyter_notebook.bat следующего содержания:

    @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-notebook.exe --notebook-dir=%1

    Аналогично, в папке C:\Dev\Jupyter\dist создайте файл run_jupyter_lab.bat следующего содержания:

    @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-lab.exe --notebook-dir=%1

    Каждый из этих файлов сначала выполняет setenv.bat , т.е. настраивает переменные окружения, потом запускает Jupyte Notebook или Jupyter Lab и указывает ему, где папка с нашими файлами для проекта.

    Предположим, что есть папка D:\my-projects , в которой мы будем хранить файлы Jupyter Notebook или Lab. В этой папке создайте ярлыки на файлы run_jupyter_notebook.bat и run_jupyter_lab.bat . После этого в обязательном порядке откройте свойства каждого из этих ярлыков и сделайте пустой строку «Рабочая папка». Если вы этого не сделаете — Jupyter не увидит вашу папку!

    После того, как это сделали, можете кликнуть дважды по любому из ярлыков. Сначала появится новое окно командной строки, потом откроется браузер по умолчанию и в нём запустится Jupyter Notebook или Lab в новой вкладке. Поздравляю: квест пройден!

    Дополнительные файлы для выполнения служебных действий

    Для Jupyter Notebook написаны расширения (о них будет подробнее в части 2). Но их недостаточно установить. Их ещё надо активировать. Согласно документации, вам нужно сделать следующее (не выполняйте эту команду!):

    jupyter nbextension enable

    Но мы не можем выполнить команду в таком виде, потому что настройки окажутся вне портативной сборки. Мы должны сделать иначе:

    C:\Dev\Jupyter\dist\setenv.bat C:\Dev\Jupyter\dist\pyenv3.7-win64\Scripts\jupyter.exe nbextension enable

    Чтобы упростить себе задачу, мы можем в папке C:\Dev\Jupyter\dist создать файл enable_extension.bat следующего содержания:

    @echo off REM Enable extension in Jupyter Notebook. REM Example: REM enable_extension.bat widgetsnbextension call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter-nbextension.exe enable %1

    В итоге наша запись в окне командной строки сократится и станет такой:

    C:\Dev\Jupyter\dist\enable_extension.bat

    Если вам время от времени в окне команд нужно запускать различные действия с jupyter , можно создать в папке C:\Dev\Jupyter\dist файл jupyter.bat следующего содержания:

    @echo off call %~dp0\setenv.bat call %~dp0\pyenv3.7-win64\Scripts\jupyter.exe %1 %2 %3 %4 %5 %6 %7 %8 %9

    Аналогично можно сделать для запуска IPython и других случаев.

    Заключение

    Часть 1 подошла к концу. Мы создали полностью портативную и переносимую сборку Jupyter и можем работать с файлами, которые лежат в нужной нам папке. Для этого создаём ярлыки на run_jupyter_notebook.bat и run_jupyter_lab.bat , в свойствах ярлыков обязательно очищаем строку Рабочая папка», и всё готово к работе.

    В части 2 будут рассмотрены различные вопросы кастомизации Jupyter Notebook, Jupyter Lab и Matplotlib. Научимся подключать расширения в Jupyter Notebook и Jupyter Lab, настраивать сочетания клавиш, размер шрифта и прочие настройки, напишем свои «магические команды».

    Если у вас остались вопросы, но нет аккаунта на Хабре, вот мои контакты:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *