it-swarm.com.ru

Как выбрать свою среду conda в Jupyter Notebook

Я установил Anaconda 5.3 с Python 3.7 (корневая среда).
После этого я создал новую среду (py36), используя Python 3.6

Я активировал новую среду с помощью activate py36
conda env list показывает, что среда активна. 

Но когда я запускаю Jupyter Notebook (из подсказки Anaconda с jupyter notebook), он, похоже, использует root environemt, а не активированную среду.

Как я могу использовать Jupyter Notebook с новой средой создания (py36)?

1
Rene

Как уже упоминалось @Ista , документация предоставляет простое решение с использованием расширений ноутбука. 

conda install nb_conda

После установки у вас есть возможность в Jupyter Notebook «Изменить ядро» в меню «Ядро» в вашем Jupyter Notebook.

1
Rene

Мне удалось найти решение для этой проблемы. Дело в том, что IPython не Virtualenv-осознает , поэтому обходной путь (который я нашел наиболее удобным) состоит в том, чтобы указать пользовательские ядра IPython, чтобы избежать установки по одной Jupyter Notebook для каждого virtualenv (или среды anaconda, в твоем случае).

Jupyter опирается на некоторые «ядра» (определения, где найти двоичный файл python), которые хранятся где-то в вашей ОС. Эти файлы примерно такие:

{
 "display_name": "NameOfTheKernel", 
 "language": "python", 
 "argv": [
  "/usr/bin/python", 
  "-m", 
  "ipykernel_launcher", 
  "-f", 
  "{connection_file}"
 ]

Где /usr/bin/python - это путь к двоичному файлу Python, который будет выполняться. Однако, так как эти ядра определены где-то на вашем компьютере Jupyter, они не обновляются, когда вы устанавливаете некоторые другие среды (как в случае с anaconda или virtualenv). Я обнаружил, что самый простой способ - определить собственное ядро ​​для каждой среды, которую вы используете. Кроме того, это исключает необходимость активировать среду каждый раз, когда вы хотите ее использовать, поскольку она загружается напрямую.

Идея состоит в том, чтобы определить собственное ядро, чтобы Jupyter мог «видеть» среду, которую вы создали с помощью anaconda. Для этого выполните в bash следующую строку:

ipython kernel install --user --name=NameOfTheKernel

«NameOfTheKernel» на самом деле не имеет большого значения. Если у вас нет пакета ipython, установите его с помощью pip, anaconda, Sudo apt install или любого другого. 

Эта строка будет определять пользовательское ядро, которое будет обнаружено jupyter. В целях иллюстрации, в Ubuntu это будет храниться в папке /home/USERNAME/.local/share/jupyter со следующей структурой данных:

/home/USERNAME/.local/share/jupyter/kernels/
└── nameofthekernel
    ├── kernel.json
    ├── logo-32x32.png
    └── logo-64x64.png

После того, как вы установили ядро, вы должны:

1) Знайте, где ваша среда была установлена ​​anaconda. Самый простой способ сделать это - активировать вашу среду в anaconda, а затем написать «какой питон» в терминале. Это покажет полный путь к двоичному файлу.

2) Запишите этот путь в только что созданном ядре jupyter. Например. используя pluma:

pluma /home/USERNAME/.local/share/jupyter/kernels/nameofthekernel/kernel.json

Затем вы заменяете путь двоичного файла Python, который вы установили, на anaconda, где /usr/bin/python

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

[TL; DR] Я сделал это с помощью pip, но шаги для анаконды будут примерно одинаковыми. Шаги:

#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json

Или, если вы работаете со средами:

#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json

БУДЬТЕ ОСТОРОЖНЫ: Я DID НЕ УСТАНАВЛИВАЛ CONDA ДЛЯ ИСПЫТАНИЯ РЕШЕНИЯ, SO ПУТИ, ВЕДУЩИЕ К ФАКТИЧЕСКИМ БИНАРИЯМ ПИТОНА, МОГУТ ИЗМЕНИТЬСЯ. Однако процедура та же самая.

0
Guillermo Jiménez