Середовища Conda, які не відображаються в Jupyter Notebook


363

Я встановив Anaconda (з Python 2.7) та встановив Tensorflow у середовищі, званому tensorflow. Я можу імпортувати Tensorflow в цьому середовищі.

Проблема полягає в тому, що ноутбук Jupyter не розпізнає нове середовище, яке я тільки що створив. Незалежно від того , я починаю Jupyter ноутбук з графічним інтерфейсом Navigator або з командного рядка в межах від tensorflowокр, є тільки одне ядро в меню називається Python [Root], і Tensorflow не можуть бути імпортовані. Звичайно, я кілька разів натискав на цю опцію, зберігав файл, знову відкривався, але це не допомогло.

Як не дивно, я бачу два середовища, коли відкриваю Condaвкладку на першій сторінці Юпітера. Але коли я відкриваю Filesвкладку і намагаюся newзаписувати ноутбук, я все-таки закінчуюся лише одним ядром.

Я переглянув це питання: Пов’яжіть середовище Conda з ноутбуком Jupyter, але немає такого каталогу, як ~/Library/Jupyter/kernelsна моєму комп’ютері! У цьому каталозі Юпітера є лише одна підкаталога runtime.

Я справді розгублений. Чи повинні середовища Conda стати ядрами автоматично? (Я дотримувався https://ipython.readthedocs.io/en/stable/install/kernel_install.html, щоб вручну налаштувати ядра, але мені було сказано, що ipykernelне знайдено.)


43
Бігайте conda install ipykernelв тому середовищі.
Томас К

1
conda install ipykernelздається, встановлюється jupyterв оточенні ... Я щось пропускаю?
Dror

1
імовірно, що ipykernel має в якості залежності юпітер?
кевінкаякс

1
здається, більше не працює ... див. відповідь нижче від Andreas
Кейсі L

@ThomasK це працює лише в тому випадку, якщо nb_condaвоно використовується або якщо ядро ​​налаштовано вручну, як це запропоновано в питанні. В іншому випадку це насправді зіпсує речі досить багато. Виконавчий файл jupyterбуде вказувати на виконуваний файл у середовищі, але система jupyter-notebookбуде запущена (якщо встановлена) і, отже, не використовуватиме середовище з ядром за замовчуванням.
мастило

Відповіді:


542

Я не думаю, що інші відповіді вже не працюють, оскільки конда перестала автоматично налаштовувати середовища як ядра юпітера. Вам потрібно вручну додати ядра для кожного середовища таким чином:

source activate myenv
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"

Як задокументовано тут: http://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments Також див. Цю проблему .

Додаток: Ви повинні мати змогу встановити nb_conda_kernelsпакет, conda install nb_conda_kernelsщоб автоматично додавати всі середовища, див. Https://github.com/Anaconda-Platform/nb_conda_kernels


28
Чи можливо якось прапор є найсучаснішим рішенням на сьогоднішній день?
N. CHATURV3DI

1
Тільки це працювало на мене! conda встановити nb_conda - не допомогло. Дякую!
Дейл

2
Установка nb_conda_kernelsпрацювала для мене в квітні 2018 роки ( Python 3.6.4, conda 4.3.27, jupyter 4.4.0).
wflynny

3
Виправлення до мого попереднього коментаря: нове оточення з’являється не вперше. Після того, як ви деактивуєте та знову активуєте env, а потім відкрийте юпітер, він відобразиться належним чином.
R71,

23
Якщо це не працює, ви спробуйте запустити conda install ipykernelцю відповідь, маючи на увазі, що у вас вже встановлено це середовище.
Кен Майєрс

150

Якщо ваше середовище не відображається, ви, ймовірно, не nb_conda_kernelsвстановлені в середовищі, де встановлений Jupyter. У документації Анаконда зазначено, що

nb_conda_kernelsповинні бути встановлені в середовищі, з якого ви запускаєте Jupyter Notebook або JupyterLab. Це може бути ваше базове середовище conda, але цього не повинно бути. Наприклад, якщо середовище notebook_env містить пакет ноутбука, ви б запустили

conda install -n notebook_env nb_conda_kernels

У будь-яких інших середовищах, до яких ви хочете отримати доступ у своїх ноутбуках, має бути встановлений відповідний пакет ядра. Наприклад, для доступу до середовища Python він повинен мати пакет ipykernel; напр

conda install -n python_env ipykernel

Для використання середовища R він повинен мати пакет r-irkernel; напр

conda install -n r_env r-irkernel

Для інших мов повинні бути встановлені відповідні ядра .

Зауважте, що на момент початкового розміщення цього повідомлення була можлива причина того, що nb_condaще не підтримуються середовища Python 3.6 .

Якщо в інших рішеннях не вдасться змусити Юпітера розпізнавати інші середовища conda, ви завжди можете встановити та запуститись jupyterіз певного середовища. Можливо, ви не зможете побачити або переключитися на інші середовища зсередини Юпітера.

$ conda create -n py36_test -y python=3.6 jupyter
$ source activate py36_test
(py36_test) $ which jupyter
/home/schowell/anaconda3/envs/py36_test/bin/jupyter
(py36_test) $ jupyter notebook

Зауважте, що я запускаю Python 3.6.1 у цьому ноутбуці: введіть тут опис зображення

Зауважте, що якщо ви робите це у багатьох середовищах, доданий простір для зберігання після встановлення Jupyter у кожне середовище може бути небажаним (залежно від вашої системи).


Привіт Вибачте, що знову відкрили цю тему. Однак я спробував все, як тут радили, і досі не бачу тензорфлоу-енв у юпітері. У мене встановлений джупітер в Tensorflow env. У мене там встановлений python 3.6.1. Я спробував встановити conda nb_conda, але він говорить про конфлікт з py3.6. Так що не встановили спокою все інше, що я спробував, і, здається, не працює. Будь-яка порада?
Baktaawar

добре. Я ще раз перевірив. Моя проблема полягає в тому, що мій юпітер, відкриваючись ядром Python 3, не може імпортувати жодні модулі. Я не впевнений, чому це. А також не показує інших
затруднень

2
@Baktaawar, дивіться мою оновлену відповідь, що демонструє, як використовувати python 3.6 у зошиті. Ви можете запустити середовище python 3.6, вам просто потрібно запустити юпітер із активним середовищем. Середовища Conda можна розглядати як автономні установки пітонів. Якщо ви встановите Jupyter у свій системний пітон, ви також побачите лише один варіант ядра python. nb_condaмета лише "[забезпечити] середовище Conda та розширення доступу до пакета з Jupyter", а не зробити так, щоб ви могли запустити Jupyter з обраної вами установки python.
Стівен К. Хоуелл

1
@ StevenC.Howell дякую за вирішення моєї проблеми. Я думаю, вам все одно потрібно згадати, що ipykernelпотрібно встановити в кожній програмі, яку ви хочете використовувати як ядро.
мерв

1
Хм, я не впевнений, чому це працює без цього. Ви маєте рацію, вони чітко заявляють, що це слід встановити. Я додав це до своєї відповіді. Дякую!
Стівен Ч. Хоуелл

112

Прикро, що у вашому tensorflowоточенні ви можете працювати jupyter notebook без встановлення jupyterв цьому середовищі . Просто біжи

(tensorflow) $ conda install jupyter

і tensorflowоточення тепер повинно бути видимим у ноутбуках Юпітера, запущених у будь-якому з ваших condaсередовищ, як щось подібне Python [conda env:tensorflow].


6
У мене була така ж проблема, як у Хоми К, і рішення, яке поділяв Октавій, вирішило і мою проблему. Однак є один улов, якщо у вас є версія Anaconda Python 3, ви зможете побачити лише ваше поточне активне середовище, і він повинен мати власний Юпітер. Але якщо встановити версію Anaconda Python 2, вона може обробляти всі середовища.
rkmalaiya

6
ви можете зробити "conda install nb_conda", а також у версії анаконди Python2, щоб керувати своїми оточеннями від самого Юпітера.
rkmalaiya

7
@rkmalaiya правильна. Якщо ви працюєте Miniconda3 або Anaconda3, виконайте виконання conda install nb_condaв одному з джерел конди (на якому встановлений ноутбук юпітера). Потім ви можете перемикати ядра / conda envs у браузері ноутбуків юпітерів.
Харша Манджунат

1
Можна повідомити, що цей метод працює у вересні 2018 року за допомогою Anaconda 5.2 Python 3.6
jdr5ca

13
Це жахлива відповідь, оскільки він спонукає користувачів встановлювати Jupyter у кожній програмі, що зовсім непотрібно. Причина, чому це працює, полягає в тому, що ipykernel(що є єдиним, що насправді потрібно), є залежністю jupyter.
мерв

72

Мені довелося виконати всі команди, згадані у топ-3 відповідях, щоб це працювало:

conda install jupyter
conda install nb_conda
conda install ipykernel
python -m ipykernel install --user --name mykernel

9
Це те, що працювало і для мене, але мені це не потрібноconda install nb_conda
Кен Майерс

3
Дивовижна дистиляція!
Бао-Тінь ​​Хоанг

1
Мені просто знадобилися перші 3 команди, щоб показати ядро ​​середовища як варіант, коли я запускаю jupyter labвсередині цього конкретного середовища
Ігор Фобія

3
Працював і для мене. Боже мій це було розчарувати.
Тревор Бай

4
Вам не потрібно nb_conda! ;)
Prayson W. Daniel

48

Просто запустіть conda install ipykernelу своєму новому середовищі, лише тоді ви отримаєте ядро ​​з цією середовищем. Це працює навіть у тому випадку, якщо у вас є різні версії, встановлені в кожній програмі, і він не встановлює знову ноутбук юпітера. Ви можете запустити свій ноутбук з будь-якого середовища, де ви зможете побачити щойно додані ядра.


10
Це найкраща відповідь на січень 2018 року. Юпітер повинен автоматично відкрити ваше ядро ​​при запуску, якщо ви просто conda install ipykernel знаходитесь у вашому середовищі conda. Найгірший випадок, ви можете використовувати python -m ipykernel install --user --name mykernelвручну генерування ядра, але ви не хотіли б цього робити, якщо воно вже автоматично виявлено, або воно з’явиться двічі у списку ядра.
коллін

2
це також встановить Юпітер і всі його залежності. Це працює, але якось це не оптимально
Quickbeam2k1

16

Підсумок (tldr)

Якщо ви хочете, щоб ядро ​​'python3' завжди запускало установку Python із середовища, де воно запускається, видаліть ядро ​​користувача 'python3', яке має перевагу перед тим, у якому поточному середовищі знаходиться:

jupyter kernelspec remove python3

Повне рішення

Я збираюся розмістити альтернативне і простіше рішення для наступного випадку:

  • Ви створили середовище conda
  • У цьому середовищі встановлено юпітер (який також встановлює ipykernel)
  • Коли ви запускаєте команду jupyter notebookі створюєте новий ноутбук, натиснувши на кнопку "python3" у спадному меню "Нове", цей ноутбук виконує python з базового середовища, а не з поточного середовища.
  • Ви хотіли б це зробити так, що запуск нового ноутбука з 'python3' в будь-якому середовищі виконує версію Python з цього середовища, а НЕ базову

Я буду використовувати назву 'test_env' для оточення для іншої частини рішення. Також зауважте, що "python3" - це ім'я ядра.

Наразі відповідь, що голосує на вершині, дійсно працює, але є альтернатива. Тут написано:

python -m ipykernel install --user --name test_env --display-name "Python (test_env)"

Це дасть вам можливість використовувати середовище test_env незалежно від того, з якого середовища ви запускаєте jupyter notebook. Але, запустивши ноутбук з 'python3', все одно буде використана установка Python з базового середовища.

Що ймовірно, що це те, що існує ядро ​​користувача python3, яке існує. Виконайте команду, jupyter kernelspec listщоб перелічити всі ваші середовища. Наприклад, якщо у вас є mac, вам повернуть наступне (моє ім’я користувача - Тед).

python3       /Users/Ted/Library/Jupyter/kernels/python3

Що тут робить Юпітер - це пошук трьох різних шляхів пошуку ядер. Він переходить від користувача , Env до системи . Докладнішу інформацію про шляхи пошуку для кожної операційної системи див. У цьому документі .

Два вище ядра знаходяться на шляху користувача, тобто вони будуть доступні незалежно від середовища, з якого ви запускаєте ноутбук з юпітером. Це також означає, що якщо на рівні навколишнього середовища є ще одне ядро ​​'python3', ви ніколи не зможете отримати доступ до нього.

Для мене має більше сенсу, що обираючи ядро ​​'python3' з середовища, з якого запустили ноутбук, слід виконати Python з цього середовища.

Ви можете перевірити, чи є у вас інше середовище 'python3', переглянувши шлях пошуку Env для вашої ОС (див. Посилання на документи вище). Для мене (на моєму mac) я видав таку команду:

 ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels

І я дійсно мав там ядро ​​'python3'.

Завдяки цьому коментарю щодо проблеми GitHub (дивіться першу відповідь), ви можете видалити користувальницьке середовище 'python3' за допомогою наступної команди:

jupyter kernelspec remove python3

Тепер, коли ви запустите jupyter kernelspec list, припускаючи, що test_env все ще активний, ви отримаєте наступне:

python3       /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3

Зауважте, що цей шлях знаходиться в каталозі test_env. Якщо ви створите нове середовище, встановите Jupyter, активуєте його та перерахуєте ядра, ви отримаєте ще одне ядро ​​'python3', яке знаходиться у його середовищі.

Користувач ядра 'python3' мав перевагу перед будь-яким ядром Env 'python3'. Видаляючи його, активне середовище ядра 'python3' було відкрито і його можна було обирати кожен раз. Це виключає необхідність вручну створювати ядра. Це також має більше сенсу з точки зору розробки програмного забезпечення, де можна було б ізолювати себе в єдиному середовищі. Запуск ядра, яке відрізняється від хост-середовища, не здається природним.

Також видається, що цей користувач "python3" встановлений не для всіх за замовчуванням, тому не всі стикаються з цим питанням.


python -m ipykernel install --user --name test_env --display-name "Python (test_env)" працює як шарм. Дякую
slobodan.blazeski

12
    $ conda install nb_conda_kernels

(у середовищі conda, де ви запускаєте ноутбук з юпітером), всі кондо-вікна стануть доступними автоматично. Для доступу до інших середовищ повинні бути встановлені відповідні ядра. Ось посилання .


Це не просто резюмує stackoverflow.com/a/48349338/570918 ?
мерв

Це виглядає як найпростіший спосіб.
Декула

9

Ми дуже боремося з цим питанням, і ось що для нас працює. Якщо ви використовуєте канал conda-forge , важливо переконатися, що ви використовуєте оновлені пакети conda-forge, навіть у вашому Minicondaкореневому середовищі.

Тож встановіть Miniconda , а потім виконайте:

conda config --add channels conda-forge --force
conda update --all  -y
conda install nb_conda_kernels -y
conda env create -f custom_env.yml -q --force
jupyter notebook

і ваше користувальницьке середовище відображатиметься в Jupyter як доступне ядро, якщо ipykernelвоно вказане для встановлення у вашому custom_env.ymlфайлі, як у цьому прикладі:

name: bqplot
channels:
- conda-forge
- defaults
dependencies:
- python>=3.6
- bqplot
- ipykernel

Просто щоб довести, що це працює з купою спеціальних середовищ, ось захоплення екрана з Windows:

введіть тут опис зображення


8

nb_conda_kernelsПакет є найкращим способом використовувати jupyterз conda. Маючи мінімальні залежності та конфігурацію, це дозволяє використовувати інші середовища конди з ноутбука юпітера, що працює в іншому середовищі. Цитуючи свою документацію :

Установка

Цей пакет призначений для управління виключно за допомогою conda. Він повинен бути встановлений у середовищі, з якого ви запускаєте Jupyter Notebook або JupyterLab. Це може бути ваше baseсередовище conda, але цього не повинно бути. Наприклад, якщо середовище notebook_envмістить пакет ноутбука, ви б запустили

conda install -n notebook_env nb_conda_kernels

У будь-яких інших середовищах, до яких ви хочете отримати доступ у своїх ноутбуках, має бути встановлений відповідний пакет ядра. Наприклад, для доступу до середовища Python, він повинен мати ipykernelпакет; напр

conda install -n python_env ipykernel

Для використання середовища R він повинен мати пакет r-irkernel; напр

conda install -n r_env r-irkernel

Для інших мов повинні бути встановлені відповідні ядра .

Тоді все, що вам потрібно зробити, це запустити сервер ноутбуків юпітерів:

conda activate notebook_env  # only needed if you are not using the base environment for the server
# conda install jupyter # in case you have not installed it already
jupyter

введіть тут опис зображення


Незважаючи на безліч відповідей та зусилля @ merv щодо їх вдосконалення, важко знайти хороший. Я зробив цей CW, тому, будь ласка, проголосуйте його до вершини або вдосконаліть!



7

Я зіткнувся з цією ж проблемою, коли моє нове середовище conda myenv, не могло бути вибране як ядро ​​чи новий ноутбук. І біг jupter notebookзсередини оточення дав той же результат.

Моє рішення та те, що я дізнався про те, як ноутбуки Юпітера розпізнають conda-envs та ядра:

Встановлення jupyter та ipython to myenvwith conda:

conda install -n myenv ipython jupyter

Після цього, jupter notebookза межами будь-якого env, вказаного myenvяк ядро, та моїх попередніх середовищ.

Python [conda env:old]
Python [conda env:myenv]

Запуск ноутбука, коли я активував середовище:

source activate myenv
jupyter notebook

приховує всі мої інші ядра середовища і показує лише мої ядра мови:

python 2
python 3
R

6

Це працювало для мене у Windows 10 та останньому рішенні:

1) Зайдіть всередину конденсаційного середовища (активуйте своє ім’я_в_в_захисту)

2) conda install -n your_env_name ipykernel

3) встановити python -m ipykernel --user - ім'я_комплект_центрального - відображення-ім'я "your_env_name"

(ПРИМІТКА. Додайте лапки навколо "your_env_name", на кроці 3)


4

Це було настільки засмучує, що моя проблема полягала в тому, що в новоствореному середовищі conda python36 юпітер відмовився завантажувати «новонародженого» - навіть незважаючи на те, що в цьому середовищі було встановлено. Здавалося б, можна було імпортувати безліч інших файлів з того самого середовища - наприклад, numpy та панди, але просто не морські. Я намагався багато виправлень, запропонованих тут і на інших темах, без успіху. Поки я не зрозумів, що Юпітер не запускає пітон ядра з цього середовища, але запускає системний пітон як ядро. Навіть незважаючи на те, що гідне ядро ​​та kernel.json вже були в середовищі. І лише після прочитання цієї частини документації на ipython: https://ipython.readthedocs.io/en/latest/install/kernel_install.html#kernels-for-different-environments і за допомогою цих команд:

source activate other-env
python -m ipykernel install --user --name other-env --display-name "Python (other-env)"

Мені вдалося змусити все гарно. (Я фактично не використовував змінну –User).

Я ще не зрозумів, як встановити за замовчуванням python на "Python (other-env)". В даний час існуючий .ipynb-файл, відкритий з головного екрану, використовуватиме системний пітон. Мені потрібно використовувати меню ядра “Змінити ядро”, щоб вибрати пітон середовища.


4

Хоча відповідь @ coolscitist працювала на мене, є також спосіб, який не захаращує ваше середовище ядра повним пакетом jupyter + deps. Він описаний у документах ipython і є (я підозрюю) необхідним лише у тому випадку, якщо ви запускаєте сервер ноутбуків у неосновному середовищі.

conda activate name_of_your_kernel_env
conda install ipykernel
python -m ipykernel install --prefix=/home/your_username/.conda/envs/name_of_your_jupyter_server_env --name 'name_of_your_kernel_env'

Ви можете перевірити, чи працює він за допомогою

conda activate name_of_your_jupyter_server_env 
jupyter kernelspec list

1
насправді, оновлення юпітера та використання conda install nb_conda_kernelsпрацює краще.
jan-glx

Зауважте лише, що python -m ipykernel installце традиційний маршрут реєстрації env, і працює для інших (без конда) envs. Ідея nb_conda_kernelsполягає в тому, що вам не потрібно робити це вручну, поки ви встановите ipykernel.
мерв

Так! Я перетворив цей коментар у цю самостійну відповідь .
jan-glx

2

У мене була подібна проблема, і я знайшов рішення, яке працює для Mac, Windows та Linux. Потрібно кілька основних інгредієнтів, які є у відповіді вище:

Щоб побачити conda env у ноутбуці Юпітера, вам потрібно:

  • наступний пакет у вашій базі env:
    conda install nb_conda

  • наступний пакет у кожній створеній вами середовищі:
    conda install ipykernel

  • перевірте конфігурацію jupyter_notebook_config.py
    першої перевірки, чи є jupyter_notebook_config.pyу вас одне місце, вказане, jupyter --paths
    якщо воно не існує, створіть його, запустивши jupyter notebook --generate-config
    додавання або переконайтесь, що у вас є наступне:c.NotebookApp.kernel_spec_manager_class='nb_conda_kernels.manager.CondaKernelSpecManager'

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

У Лабораторії Юпітера ви можете побачити те ж саме оточення, що і вище, як на Блокноті та консолі: введіть тут опис зображення

І ви можете обрати свою програму, коли відкрийте ноутбук: введіть тут опис зображення

Безпечним способом є створення конкретного env, з якого ви запустите свій приклад команди envjupyter lab . Активуйте свою околицю. Потім додайте приклад розширення лабораторії юпітера . Тоді можна бігти jupyter lab


1

Дотримуйтесь вказівок в документації на iPython щодо додавання різних середовищ conda до списку ядер, які вибираєте в Jupyter Notebook. Підсумовуючи це, після встановлення ipykernelви повинні активувати кожне середовище conda по одному в терміналі та запустити команду python -m ipykernel install --user --name myenv --display-name "Python (myenv)", де myenvсаме середовище (ядро), яке ви хочете додати.


1

Можливий конкретний випуск

У мене виникла ця проблема (знову), і виявилося, що я встановлений з каналу conda-forge ; вилучивши його та перевстановившись з каналу анаконди, замість цього виправили його.

Оновлення : У мене знову була така ж проблема з новим оточенням, цього разу я встановив канал nb_conda_kernelsз анаконди , але мій jupyter_clientбув із каналу conda-forge . Видалення nb_conda_kernelsта перевстановлення оновило його до каналу з більш високим пріоритетом.

Тому переконайтесь, що ви встановили з правильних каналів :)


Схоже, у вас можуть бути змішані деякі речі. jupyterі nb_conda_kernelsповинен бути встановлений в одній env - це те, звідки ти завжди біжиш jupyter notebook. Нові заклики потребують лише ipykernel, але не повинні активуватися під час роботи jupyter notebook.
merv

1
Я знаю, це було на новій машині.
xyzzyqed

1
Добре. Я відредагував вашу відповідь, здебільшого, щоб я міг змінити свій голос, а також уточнити, як ви називаєте канал conda (не річ - або за замовчуванням, або анаконда ). Не соромтесь відредагувати його далі, якщо я помиляюсь про те, що сталося.
мерв

-1

У моєму випадку, використовуючи Windows 10 та conda 4.6.11, запускаючи команди

conda install nb_conda

conda install -c conda-forge nb_conda_kernels

з терміналу під час активного оточення не робив завдання після того, як я відкрив Jupyter з того ж командного рядка, використовуючи conda jupyter notebook.

Мабуть, рішення було відкрити Юпітер з Anaconda Navigator, перейшовши до мого середовища в середовищі: відкрийте Anaconda Navigator, виберіть середовище в середовищі, натисніть кнопку «відтворити» у вибраному середовищі та виберіть «відкрити за допомогою ноутбука Юпітера».

Середовища в Anaconda Navigator для запуску Юпітера з обраного середовища


1
Ознайомтеся з документацією щодо використання ядер Conda. Ви запускаєте Юпітера з env, що має Юпітера; ви встановлюєте ipykernelвсі envs, які ви хочете використовувати в Jupyter як ядра.
merv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.