Как в проекте менять версии Python внутри venv (на Windows 10)
у меня Windows 10. Я не использую среду разработки PyCharm. Я использую блокнот Jupyter Notebook. (1) Сначала я просто скачал с официального сайта инсталлятор python-3.8.10-amd64.exe и установил его обычным способом: В итоге Питон установился куда я и просил:
(2) Далее я создаю папку test1 для своего проекта и перехожу в неё в командной строке:
cd C:\Users\alexw\Desktop\test1
И создаю тут виртуальное окружение:
C:\Users\alexw\Desktop\test1> python -m venv env
в итоге в директории test1 вижу поддиректорию env Активирую окружение:
env\Scripts\activate

в результате в командной строке перед командой появляется надпись (env) (3) Проверяю версию Питон:
python --version => Python 3.8.10 (как и ожидалось)

(4) Далее ставлю любую нужную библиотеку, нужной версии (правильную команду смотрю на сайте pypi.org), например:
pip install requests==2.27.0

Смотрю версию командой pip list и убеждаюсь что она 2.27.0 (5) Далее например мне надо проверить на другой версии. Ставлю другую версию:
pip install requests==2.25.1

Убеждаюсь что версия поменялась: То есть, я так понял, в Питоне любая вновь установленная версия библиотеки «перезатирает» предыдущую версию в данном виртуальном окружении. Ну хорошо. Вроде понятно. Сейчас такая проблема: Мне теперь надо протестировать некие скрипты не просто на разных версиях библиотек, а еще и на разных версиях интерпретатора Питон. Например, в данный момент у меня в виртуальном окружении Питон 3.8.10 (см. пункт (3) ). А сейчас мне нужна версия Python 3.9.8. Причём мне в принципе не важно, что там глобально установлено, мне именно в моём текущем виртуальном окружении env это надо, чтобы я мог при желании менять версии интерпретатора Питон одной командой, как я сейчас меняю одной командой текущие версии библиотек. Подскажите плиз, как лучше сделать?
Использование Anaconda и создание собственных Python окружений
Для выполнения расчетов с помощью Python, как правило, требуются дополнительные библиотеки. Оптимальным способом загрузки дополнительных библиотек на вычислительном кластере НИУ ВШЭ является использование программного пакета Anaconda. Это удобный менеджер пакетов Python, предназначенный для создания изолированных окружений Python и автоматического разрешения зависимостей. На суперкомпьютере уже имеется базовое окружение Anaconda, которое можно подключить следующей командой:
module load Python
После подключения этого модуля становятся доступными для использования большинство наиболее популярных библиотек Python, включенных в состав базового набора Anaconda.
Полный список библиотек в окружении можно посмотреть командой conda list
Установка других пакетов или обновление версий в базовом окружении невозможна.
Также доступны дополнительные окружения с пакетами PyTorch, TensorFlow и аналогом Google Colab: module available Python
Если вам необходимо установить пакеты или версии пакетов, которых нет в базовом окружении, то потребуется создать своё собственное изолированное окружение и установить в него необходимые модули:
conda create -n python=
Например, для создания окружения «my_py_env1» на базе последней версии Python 3 воспользуйтесь следующей командой:
conda create -n my_py_env1 python=3
На запрос об установке новых пакетов ответьте «y».
Далее необходимо задействовать созданное окружение:
source activate my_py_env1
После активации в приглашении терминала появится префикс с именем окружения:
(my_py_env1) [anaconda@sms ~]$ python -V
Для вывода списка доступных окружений используйте команду conda env list
Для установки необходимых пакетов используйте команду conda install, например, для установки последней версии NumPy:
conda install numpy
Для установки пакетов из файла requirements.txt можно использовать команду conda install —file requirements.txt
Обратите внимание: на вычислительных узлах из соображений безопасности нет доступа в Интернет. Все пакеты необходимо предварительно установить, подключившись к логин-серверу суперкомпьютера.
С помощью команды conda search выполняется поиск пакетов в репозиториях Anaconda. Также поиск можно осуществлять на сайте https://anaconda.org/anaconda/
Отключить окружение (например, для выбора другого): conda deactivate
Для подключения окружения к ноутбукам в JupyterHub установите соответствующее ядро (см. https://github.com/jupyter/jupyter/wiki/Jupyter-kernels).
Например, для Python необходимо установить ядро ipykernel:
conda install ipykernel
После установки ядра это окружение появится в списке на главной странице JupyterLab:
Переключить используемое окружение и ядро можно в уже запущенном ноутбуке, кликнув по названию ядра в правом верхнем углу или в меню Kernel -> Change Kernel. 
Настройка окружения Python для работы с GPU на вычислительных узлах
Для работы с GPU на вычислительных узлах необходимо предварительно настроить изолированное окружение Python на логин-сервере (sms) вычислительного кластера НИУ ВШЭ:
- Выгрузить все загруженные модули и активировать модуль Anaconda:
module purge; module load Python - Создать и активировать новое изолированное окружение Anaconda:
conda create -n my_py_env
source activate my_py_env
Если вы часто запускаете задачи с использованием srun, то рекомендуется в файл ~/.bashrc добавить строчку source activate my_py_env. В этом случае будет автоматически активироваться созданное окружение. - Установить необходимые пакеты Python, например для PyTorch:
conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia
Большие фреймворки, такие как PyTorch или TensorFlow, рекомендуется устанавливать в первую очередь и в новое пустое окружение. Это позволит установить версии пакетов с поддержкой GPU без возможного влияния ранее установленных модулей. - Пакеты, которым для установки необходимо наличие GPU, необходимо предварительно скачать, затем выделить вычислительный узел с GPU и установить пакет с локального каталога. Например, для установки пакета pytorch_scatter из git-репозитория следует выполнить следующие команды:
git clone https://github.com/rusty1s/pytorch_scatter
srun —pty —cpus-per-task 1 —gpus 1 bash
cd pytorch_scatter
pip install -e .
Здесь точка в конце команды означает указание на текущий каталог — будет выполнена сборка и установка модуля из текущей директории. - Провести проверочный запуск на 1 GPU и подготовить скрипт-файл для sbatch по примеру из инструкции по запуску задач на суперкомпьютере. Пример sbatch-скрипта:
- Добавлять аргумент flush=True в функцию print: print(‘Start’, flush=True) (это работает только при версии python >= v3.3).
- Добавить аргумент -u при запуске задачи к самому интерпретатору: например, python3 -u myprog.py (изменений в коде в данном случае не понадобится).
- О ВЫШКЕ
- Цифры и факты
- Руководство и структура
- Преподаватели и сотрудники
- Корпуса и общежития
- Закупки
- Обращения граждан в НИУ ВШЭ
- Фонд целевого капитала
- Противодействие коррупции
- Сведения о доходах, расходах, об имуществе и обязательствах имущественного характера
- Сведения об образовательной организации
- Людям с ограниченными возможностями здоровья
- Единая платежная страница
- Работа в Вышке
- ОБРАЗОВАНИЕ
- Лицей
- Довузовская подготовка
- Олимпиады
- Прием в бакалавриат
- Вышка+
- Прием в магистратуру
- Аспирантура
- Дополнительное образование
- Центр развития карьеры
- Бизнес-инкубатор ВШЭ
- НАУКА
- Научные подразделения
- Исследовательские проекты
- Мониторинги
- Диссертационные советы
- Защиты диссертаций
- Академическое развитие
- Конкурсы и гранты
- Научно-образовательный портал IQ.hse.ru
- XXIV Ясинская (Апрельская) международная научная конференция по проблемам развития экономики и общества
- РЕСУРСЫ
- Библиотека
- Издательский дом ВШЭ
- Книжный магазин «БукВышка»
- Типография
- Медиацентр
- Журналы ВШЭ
- Публикации
- Единый архив экономических и социологических данных
- Полезные ссылки
- Министерство науки и высшего образования РФ
- Министерство просвещения РФ
- Федеральный портал «Российское образование»
- Массовые открытые онлайн-курсы
- Введение
- Краткая инструкция по созданию портативной сборки 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
- Создайте папку C:\Dev . В ней будут установлены Minconda и портативная сборка Jupyter*.
*Здесь и далее Jupyter = Jupyter Notebook + Juputer Lab. - Скачайте инсталлятор Miniconda с сайта https://conda.io/miniconda (en) . Выберите Python 3 для Windows 64 бит или 32 бит в зависимости от разрядности вашей операционной системы. Установите Miniconda в папку C:\Dev\Miniconda3 .
- Создайте следующую структуру каталогов для портативной сборки 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 condaC:\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 %1C:\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 приложение:
- Запускаем инсталлятор, жмём Next

- Соглашаемся с лицензионным соглашением I Agree

- Я предпочитаю установку для всех пользователей, потому что это даст мне возможность указать путь для установки. Выбираем пункт «All users»:

- Корректируем путь для установки на C:\Dev\Miniconda3 :

- Здесь я ставлю оба флажка. Флажок «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 и начнётся процесс установки:
- Во время установки можете нажать Show details. Тем самым вы увидите больше информации о том, что именно происходит во время установки. Но это не обязательно.
- Когда установка закончится, появится фраза «Completed», а кнопка Next станет доступной. Жмём Next

- В последнем окне нам предлагается узнать про Anaconda Cloud (это первый флажок) и как начать работу с Anaconda (второй флажок). Мне ничего из этого не нужно, поэтому я снимаю все флажки и нажимаю Finish. Установка Miniconda завершена.

После установки Miniconda в папке C:\Dev мы увидим новую папку Miniconda весом примерно 340 Мб. Да, это немало, и она ещё будет раздуваться. Позже я покажу, как быстро и безопасно уменьшать её объём.
Зайдём в папку Miniconda . Немного прокрутив список файлов, мы увидим python.exe . Тот самый Python 3.7, который установился в моём случае (на скриншоте Directory Opus).

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

Вы можете для теста после >>> ввести:
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 . В итоге было применено следующее решение:
- Создали папку C:\Dev\openssl .
- В папке C:\Dev\Miniconda3\pkgs нашли папку, название которой начинается с openssl . Например, openssl-1.1.1a-he774522_0 . Если папок несколько, выбираем ту, у которой в названии номер больше.
- В найденной папке ищем файл openssl.exe и копируем openssl.exe и все файлы и папки, которые лежат вместе с openssl.exe , в C:\Dev\openssl .

- В Проводнике Windows заходим в «Этот компьютер» (где перечисляются все диски на компьютере). В свободном месте правым кликом мыши открываем контекстное меню и выбираем в самом низу пункт «Свойства».

- В открывшемся окне находим «Дополнительные параметры системы»:

- На вкладке «Дополнительно» находим кнопку Переменные среды:

- Для Windows 7 и 8: в разделе «Переменные среды для пользователя» дважды кликаем по переменной Path . Если в конце строки отсутствует точка с запятой, поставим её, и в конце этой строки допишем:
C:\Dev\openssl;
Для Windows 10: в разделе «Переменные среды для пользователя» дважды кликаем по переменной Path . В итоге должно появиться такое окно:
Нажимаем кнопку «Создать» и вставляем путь C:\Dev\openssl . - Закройте и откройте командную строку снова. Теперь всё должно работать. Если вдруг не заработало — надо гуглить ошибку или обращаться на форумы.
#!/bin/bash #SBATCH --job-name=test #SBATCH --gpus=1 module purge module load Python source deactivate source activate my_py_env nvidia-smi which python python -V python -c 'import torch; print(torch.cuda.is_available())'
Важно: о выводе результатов в консоль
По умолчанию python использует буфферизованный вывод (т.е. вывод НЕ мгновенно передается в результирующий файл).
Например, в случае такого кода:
from time import sleep print('Start') for i in range(60): sleep(1) print('Done')
Начальный вывод «Start» появится в файле вывода (slurm-.out) только спустя 60 итераций (одновременно с «Done»).
Для задач, результаты которых оцениваются в процессе выполнения (выводятся промежуточные значения и тп), это не подходит (например, в случае, когда задача завершится по таймауту, вывода в файле не будет).
Для мгновенного отображения результатов предлагается 2 варианта:
Нашли опечатку ?
Выделите её, нажмите Ctrl+Enter и отправьте нам уведомление. Спасибо за участие!
Сервис предназначен только для отправки сообщений об орфографических и пунктуационных ошибках.
Шрифты HSE Sans и HSE Slab разработаны в Школе дизайна НИУ ВШЭ
Настройка Jupyter Notebook с помощью Python 3 в Ubuntu 18.04

Веб-приложение с открытым исходным кодом, Jupyter Notebook, позволяет создавать и обмениваться интерактивными кодом, визуализациями и многим другим. Этот инструмент можно использовать с несколькими языками программирования, включая Python, Julia, R, Haskell и Ruby. Он часто используется для работы с данными, статистическими моделями и машинным обучением.
Из этого обучающего руководства вы узнаете, как выполнить настройку Jupyter Notebook для запуска на сервере с Ubuntu 18.04, а также научитесь подключаться к блокноту и использовать его. Блокноты Jupyter (или просто блокноты) — это документы, генерируемые приложением Jupyter Notebook, которые содержат компьютерный код и форматированные текстовые элементы (параграф, цитаты, изображения, ссылки и т.д.), которые помогают отображать и делиться воспроизводимые разработки.
К концу этого руководства вы сможете запускать код Python 3 с помощью Jupyter Notebook, запущенном на удаленном сервере.
Предварительные требования
Для прохождения этого обучающего модуля вам потребуется новый экземпляр сервера Ubuntu 18.04 с базовым брандмауэром и пользователем с привилегиями sudo и без привилегий root. Чтобы узнать, как настроить такой сервер, воспользуйтесь нашим руководством по начальной настройке сервера.
Шаг 1 — Настройка Python
Для начала процесса настройки мы установим зависимости, которые нам потребуется для нашей среды программирования Python, из репозиториев Ubuntu. В Ubuntu 18.04 уже предустановлена версия Python 3.6. Для установки дополнительных компонентов мы немного позднее используем диспетчер пакетов Python pip.
Сначала нам нужно обновить локальный индекс пакетов apt , а затем загрузить и установить пакеты:
Затем установите pip и заголовочные файлы Python, которые используются определенными зависимостями Jupyter:
Теперь мы можем перейти к настройке виртуальной среды Python, куда мы будем устанавливать Jupyter.
Шаг 2 — Создание виртуальной среды Python для Jupyter
Теперь, когда у нас есть Python 3, а заголовочные файлы и pip готовы к запуску, мы можем создать виртуальную среду Python для управления нашими проектами. Мы установим Jupyter в эту виртуальную среду.
Для этого нам потребуется доступ к virtualenv , который мы можем установить с помощью pip.
Обновите pip и установите пакет с помощью следующей команды:
Флаг -H гарантирует, что политика безопасности устанавливает переменную среды home в домашнюю директорию пользователя.
После установки virtualenv мы можем начать формирование нашей среды. Создайте каталог для файлов нашего проекта и перейдите в этот каталог. Мы назовем ее my_project_dir , но вы должны использовать имя, которое понятно вам и согласуется с тем, над чем вы работаете.
В директории проекта мы создадим виртуальную среду Python. Для целей данного руководства мы назовем ее my_project_env , но вы должны использовать название, соответствующее вашему проекту.
Эта команда создаст каталог my_project_env в каталоге my_project_dir . В этот каталог будут установлены локальная версия Python и локальная версия pip. Мы можем использовать ее для установки и настройки изолированной среды Python для Jupyter.
Перед созданием Jupyter нам потребуется активировать виртуальную среду. Для этого можно использовать следующую команду:
Командная строка изменится, показывая, что теперь вы работаете в виртуальной среде Python. Она будет выглядеть примерно так: ( my_project_env ) user @ host :~/ my_project_dir $ .
Теперь вы можете выполнить установку Jupyter в эту виртуальную среду.
Шаг 3 — Установка Jupyter
При запущенной виртуальной среде установите Jupyter с помощью локального экземпляра pip.
Примечание: если виртуальная среда активна (когда перед командной строкой стоит ( my_project_env )), необходимо использовать pip вместо pip3 , даже если вы используете Python 3. Копия инструмента в виртуальной среде всегда имеет имя pip вне зависимости от версии Python.
В данный момент вы успешно установили все программное обеспечение, необходимое для запуска Jupyter. Теперь мы можем запустить сервер Notebook.
Шаг 4 — Запуск Jupyter Notebook
Теперь у вас есть все, что нужно для запуска Jupyter Notebook! Для его запуска воспользуйтесь следующей командой:
Журнал активности Jupyter Notebook будет выведен в командной строке. При запуске Jupyter Notebook будет использоваться порт с конкретным номером. Первый Notebook, который вы будете запускать, обычно использует порт 8888 . Чтобы проверить, какой номер порта использует Jupyter, см. вывод команды, которую вы использовали для запуска:
Output[I 21:23:21.198 NotebookApp] Writing notebook server cookie secret to /run/user/1001/jupyter/notebook_cookie_secret [I 21:23:21.361 NotebookApp] Serving notebooks from local directory: /home/sammy/my_project_dir [I 21:23:21.361 NotebookApp] The Jupyter Notebook is running at: [I 21:23:21.361 NotebookApp] http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72 [I 21:23:21.361 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). [W 21:23:21.361 NotebookApp] No web browser found: could not locate runnable browser. [C 21:23:21.361 NotebookApp] Copy/paste this URL into your browser when you connect for the first time, to login with a token: http://localhost:8888/?token=1fefa6ab49a498a3f37c959404f7baf16b9a2eda3eaa6d72
Если вы запускаете Jupyter Notebook на локальном компьютере (а не на сервере), вы можете перейти к отображаемому URL-адресу для подключения к Jupyter Notebook. Если вы запускаете Jupyter Notebook на сервере, вам нужно будет подключаться к серверу с помощью туннеля SSH, как указано в следующем разделе.
В данный момент вы можете сохранить соединение SSH открытым и поддерживать Jupyter Notebook в рабочем состоянии, или закрыть приложение и снова запустить его после настройки туннеля SSH. Давайте завершим процесс Jupyter Notebook. Мы запустим его снова после настройки туннеля SSH. Чтобы остановить процесс Jupyter Notebook, нажмите CTRL+C , введите Y , а затем ENTER для подтверждения. В результате будет отображен следующий вывод:
Output[C 21:28:28.512 NotebookApp] Shutdown confirmed [I 21:28:28.512 NotebookApp] Shutting down 0 kernels
Теперь мы настроим туннель SSH, чтобы получить доступ к Notebook.
Шаг 5 — Подключение к серверу с помощью туннеля SSH
В этом разделе мы узнаем, как подключиться к веб-интерфейсу Jupyter Notebook с помощью туннеля SSH. Поскольку Jupyter Notebook будет работать на конкретном порту на сервере (например, :8888 , :8889 и т. д.), туннель SSH позволяет безопасно подключаться к порту сервера.
В следующих двух подразделах описано, как создать туннель SSH в (1) Mac или Linux и в (2) Windows. См. подраздел для вашего локального компьютера.
Туннель SSH в Mac или Linux
Если вы используете Mac или Linux, шаги, которые необходимо выполнить для создания туннеля SSH, аналогичны шагам, которые выполняются при входе на удаленный сервер с помощью SSH, за исключением дополнительных параметров в команде ssh . В этом подразделе будут показаны дополнительные параметры, необходимые команде ssh для успешного создания туннеля.
Создание туннелей SSH может быть осуществлено с помощью следующей команды SSH, которую необходимо ввести в новом окне локальной командной строки:
Команда ssh открывает соединение SSH, но -L указывает, что данный порт на локальном хосте (клиент) будет отправляться на заданный хост и порт на удаленном конце (сервер). Это значит, что бы ни было запущено на втором порту (например, 8888 ) на сервере, оно появится на первом порту (например, 8888 ) на локальном компьютере.
Вы можете изменить порт 8888 на один из ваших портов, чтобы избежать использования порта, который уже используется другим процессом.
server_username — это ваше имя пользователя (например, sammy ) на сервере, который вы создали, а your_server_ip — это IP-адрес вашего сервера.
Например, для имени пользователя sammy и адреса сервера 203.0.113.0 , команда будет выглядеть следующим образом:
Если после запуска команды ssh -L не появится ошибок, вы можете перейти в среду программирования и запустить Jupyter Notebook:
Вы получите вывод с URL-адресом. В веб-браузере на локальном компьютере откройте веб-интерфейс Jupyter Notebook с URL-адресом, который начинается с http://localhost:8888 . Убедитесь, что номер маркера включен, либо введите строку с номером маркера при запросе в http://localhost:8888 .
Создание туннелей SSH с использованием Windows и PuTTY
Если вы используете Windows, вы можете создать туннель SSH с помощью Putty.
Введите URL-адрес сервера или IP-адрес в качестве имени хоста, как показано ниже:

Далее нажмите SSH в нижней части левой панели, чтобы расширить меню, а затем нажмите Tunnels (Туннели). Введите локальный номер порта, который вы хотите использовать для доступа к Jupyter на локальном компьютере. Выберите 8000 или выше, чтобы избежать использования портов, которые уже используются другими службами, и задайте назначение localhost: 8888 , где :8888 — номер порта, на котором запущен Jupyter Notebook.
Затем нажмите кнопку Add (Добавить), после чего порты должны появиться в списке Forwarded ports (Перенаправляемые порты):

После этого нажмите кнопку Open (Открыть) для подключения к серверу через SSH и туннель с нужными портами. Перейдите на http://localhost: 8000 (или любой порт на выбор) в веб-браузере для подключения к Jupyter Notebook, запущенному на сервере. Убедитесь, что номер маркера включен, либо введите строку с номером маркера при запросе в http://localhost:8000 .
Шаг 6 — Использование Jupyter Notebook
В этом разделе рассматриваются базовые принципы использования Jupyter Notebook. Если у вас нет запущенного Jupyter Notebook, запустите его с помощью команды jupyter notebook .
Теперь вы должны быть подключены к нему с помощью браузера. Jupyter Notebook — это очень мощный инструмент с множеством функций. В этом разделе будет описан ряд базовых функций, необходимых для начала использования Notebook. Jupyter Notebook будет отображать все файлы и папки в директории, в которой он запущен, поэтому, если вы работаете над проектом, убедитесь, что вы можете запустить его из директории проекта.
Чтобы создать новый файл Notebook, выберите New (Новый) > Python 3 в выпадающем меню в верхнем правом углу:

В результате откроется Notebook. Теперь мы можем запустить код Python в ячейке или изменить ячейку на разметку. Например, измените первую ячейку, чтобы она могла принимать разметку, нажмите Cell (Ячейка) > Cell Type (Тип ячейки) > Markdown (Разметка) в верхней панели навигации. Теперь мы можем добавлять записи с помощью разметки и даже включать уравнения, созданные в LaTeX, поместив их между символами $$ . Например, введите в ячейку следующее после ее переключения на разметку:
# First Equation Let us now implement the following equation: $$ y = x^2$$ where $x = 2$
Чтобы преобразовать разметку в расширенный текстовый формат, нажмите CTRL + ENTER , и получите следующий результат:

Вы можете использовать ячейки разметки для заметок и документирования программного кода. Давайте реализуем это уравнение и распечатаем результат. Нажмите на верхнюю ячейку, а затем нажмите ALT+ENTER чтобы добавить ячейку ниже. Введите в новую ячейку следующий код.
x = 2 y = x**2 print(y)
Для запуска кода нажмите CTRL+ENTER . Вы получите следующие результаты:

Теперь вы можете импортировать модули и использовать Notebook, как и любую другую среду разработки Python!
Заключение
Поздравляем! Теперь вы можете писать воспроизводимый код Python и записи в Markdown с помощью Jupyter Notebook. Для быстрого ознакомления с интерфейсом Jupyter Notebook выберите Help (Справка) > User Interface Tour (Знакомство с пользовательским интерфейсом) в верхнем меню навигации.
Здесь вы можете запустить проект анализа данных и визуализации, ознакомившись со статьей Анализ данных и визуализация с pandas и Jupyter Notebook в Python 3.
Если вы хотите узнать больше, ознакомьтесь с нашей серией статей Визуализация временных рядов и прогнозирование.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
Создание и настройка портативной сборки Jupyter Notebook и Lab на Windows. Часть 1
Всем привет. Когда я начинал изучение Python, устанавливал впервые Jupyter Notebook, потом пытался передать с созданное в нём приложение на предприятие, я часто сталкивался с различными проблемами. То кириллица в имени пользователя мешает, то настройки не перенеслись, то ещё чего-то. Все эти проблемы я преодолел в основном самостоятельно, используя Google и затратив немало времени на их решение.
По мере роста опыта я научился создавать папку, в которой лежит переносимое с одного компьютера на другой виртуальное окружение Python, настройки Jupyter и Matplotlib, портативные программы (ffmpeg и др.) и шрифты. Я мог написать дома программу, скопировать всю эту папку на компьютер предприятия, и быть уверенным, что ничего не потеряется и не сломается на ровном месте. Потом я подумал, что такую папку можно дать и новичку в Python, и он получит полностью настроенную и переносимую среду.
Оглавление
Активация виртуального окружения
Когда создание виртуального окружения закончится, окно будет выглядеть примерно так:

После создания виртуального окружения установим пакеты через 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, настраивать сочетания клавиш, размер шрифта и прочие настройки, напишем свои «магические команды».
Если у вас остались вопросы, но нет аккаунта на Хабре, вот мои контакты:
