Среда Conda не отображается в ноутбуке Jupyter

367

Я установил Anaconda (с Python 2.7) и установил Tensorflow в среде, которая называется tensorflow. Я могу успешно импортировать Tensorflow в этой среде.

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

Странно, но я вижу две среды, когда открываю Condaвкладку на первой странице Jupyter. Но когда я открываю Filesвкладку и пытаюсь newдостать ноутбук, у меня все равно остается только одно ядро.

Я посмотрел на этот вопрос: связать среду Conda с Jupyter Notebook, но ~/Library/Jupyter/kernelsна моем компьютере нет такого каталога ! Этот каталог Jupyter имеет только один подкаталог с именем runtime.

Я действительно смущен. Должны ли среды Conda автоматически становиться ядрами? (Я следовал за https://ipython.readthedocs.io/en/stable/install/kernel_install.html, чтобы вручную настроить ядра, но мне сказали, что ipykernelон не найден.)

user31039
источник
43
Запустите conda install ipykernelв этой среде.
Томас К
1
conda install ipykernelКажется, установить jupyterв среде ... Я что-то упустил?
Дрор
1
предположительно у ipykernel есть зависимость от jupyter?
kevinkayaks
1
кажется, больше не работает ... см. ответ ниже от Андреаса
Кейси Л
@ThomasK это работает, только если nb_condaиспользуется или если ядро ​​настроено вручную, как предложено в вопросе. В противном случае это действительно испортит вещи довольно много. Исполняемый файл jupyterбудет указывать на исполняемый файл внутри среды, но система jupyter-notebookбудет запущена (если установлена) и, следовательно, не будет использовать среду с ядром по умолчанию.
поясничного

Ответы:

546

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

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
Только это сработало для меня! Конда установить nb_conda - не помогло. Спасибо!
Deil
2
Установка nb_conda_kernelsработала для меня в апреле 2018 года ( Python 3.6.4, conda 4.3.27, jupyter 4.4.0).
wflynny
3
Исправление к моему предыдущему комментарию: новый env появляется не только в первый раз. После того, как вы деактивируете и снова активируете env, а затем откроете jupyter, он будет отображаться правильно.
R71
23
Если это не работает для вас, попробуйте выполнить conda install ipykernelэтот ответ, предполагая, что он уже установлен в вашей среде.
Кен Майерс
151

Если ваши среды не отображаются, вы, вероятно, не nb_conda_kernelsустановили в среде, где установлен Jupyter. Документация Анаконды гласит, что

nb_conda_kernelsдолжен быть установлен в среде, из которой вы запускаете Jupyter Notebook или JupyterLab. Это может быть ваша базовая среда conda, но это не обязательно. Например, если среда notebook_env содержит пакет notebook, вы должны запустить

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 .

Если другие решения не позволяют Jupyter распознавать другие среды conda, вы всегда можете установить и запустить их jupyterв определенной среде. Вы, возможно, не сможете видеть или переключаться на другие среды внутри 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 в каждую среду может быть нежелательным (в зависимости от вашей системы).

Стивен Хоуэлл
источник
Привет Извините, что снова открыл эту тему. Однако я попробовал все, как советовали здесь, и до сих пор не вижу env tenorflow в jupyter. У меня установлен jupyter в приложении tenorflow env. У меня установлен Python 3.6.1. Я попытался установить conda nb_conda, но он говорит конфликт с py3.6. Так что это не было установлено, остальное все остальное, что я пробовал и, похоже, не работает. Любой совет?
Бактаавар
Хорошо. Я проверил еще раз. Моя проблема в том, что мой jupyter при запуске с ядром Python 3 не может импортировать какие-либо модули. Я не уверен, почему это так. И также это не показывает другие env тоже
Бактаавар
2
@Baktaawar, посмотрите мой обновленный ответ, демонстрирующий, как использовать python 3.6 в блокноте. Вы можете запустить среду Python 3.6, вам просто нужно запустить jupyter с этой активной средой. Окружающие среды Conda можно рассматривать как автономные установки Python. Если вы установите Jupyter в системный Python, вы также увидите только один вариант ядра Python. nb_condaЦель состоит только в том, чтобы «[обеспечить] среду Conda и расширение доступа к пакетам из Jupyter», чтобы вы не смогли запустить Jupyter из выбранной вами установки Python.
Стивен Хоуэлл,
1
@ StevenC. Хауэлл, спасибо за решение моей проблемы. Я думаю, вам все еще нужно упомянуть, что он ipykernelдолжен быть установлен в каждой среде, которую вы хотите использовать в качестве ядра.
Merv
1
Хм, я не уверен, почему это работает без него. Вы правы, они ясно заявляют, что это должно быть установлено. Я добавил это к своему ответу. Спасибо!
Стивен Хоуэлл
112

Раздражает то, что в вашей tensorflowсреде вы можете работать jupyter notebook без установки jupyterв этой среде . Просто беги

(tensorflow) $ conda install jupyter

и tensorflowсреда теперь должна быть видна в ноутбуках Jupyter, запущенных в любой из ваших condaсред, как-то так Python [conda env:tensorflow].

Октавий
источник
6
У меня была та же проблема, что и у Томаса К., и решение, которым поделился Октавий, также решило мою проблему. Однако есть одна загвоздка: если у вас есть версия Anaconda для Python 3, вы сможете увидеть только текущую активную среду, и у нее должен быть свой собственный Jupyter. Но если вы установите версию Anaconda для Python 2, она сможет работать со всеми средами.
rkmalaiya
6
вы также можете выполнить "conda install nb_conda" в версии anaconda на Python2, чтобы управлять своими envs из самого Jupyter.
rkmalaiya
7
@rkmalaiya правильно. Если вы используете Miniconda3 или Anaconda3, работайте conda install nb_condaв одной из ваших поставленных сред conda (в которой установлен ноутбук Jupyter). Затем вы можете переключать ядра / conda envs в браузере ноутбука jupyter.
Харша Манджунат
1
Может сообщить, что этот метод работает в сентябре 2018 года с Anaconda 5.2 Python 3.6
jdr5ca
13
Это ужасный ответ, потому что он побуждает пользователей устанавливать Jupyter в каждую среду, что совершенно не нужно. Причина, по которой это работает, заключается в том, что ipykernel(что единственное, что действительно нужно) - это зависимость jupyter.
Merv
72

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

conda install jupyter
conda install nb_conda
conda install ipykernel
python -m ipykernel install --user --name mykernel
coolscitist
источник
9
Это было то, что работало и для меня, но мне это не нужноconda install nb_conda
Кен Майерс,
3
Удивительная дистилляция!
Бао-Тин Хоанг
1
Мне просто нужны были первые 3 команды, чтобы показать ядро ​​среды как опцию, когда я запускаю jupyter labв этой конкретной среде
Игорь Фобия,
3
У меня тоже сработало. Боже мой, это было неприятно, чтобы понять.
Тревор Пока
4
Вам не нужно nb_conda! ;)
Прейсон В. Даниэль
48

Просто запустите conda install ipykernelв вашей новой среде, только тогда вы получите ядро ​​с этим env. Это работает, даже если у вас есть разные версии, установленные в каждом envs, и он больше не устанавливает ноутбук jupyter. Вы можете запустить свою записную книжку из любой среды, в которой вы сможете увидеть только что добавленные ядра.

Ракеш
источник
10
Это лучший ответ на январь 2018 года. Jupyter должен автоматически обнаружить ваше ядро ​​при запуске, если вы просто находитесь conda install ipykernelв своей среде conda. В худшем случае вы можете использовать python -m ipykernel install --user --name mykernelядро для генерации вручную, но вы не захотите делать это, если оно уже обнаружено автоматически, или оно будет дважды отображаться в списке ядра.
Коллин
2
это также установит Юпитер и все его зависимости. Это работает, но почему-то это не оптимально
Quickbeam2k1
16

Резюме (tldr)

Если вы хотите, чтобы ядро ​​'python3' всегда запускало установку Python из среды, в которой оно запущено, удалите ядро ​​'python3' пользователя, которое имеет приоритет над любой текущей средой:

jupyter kernelspec remove python3

Полное решение

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

  • Вы создали среду conda
  • В этой среде установлен jupyter (который также устанавливает 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, вам будет возвращено следующее (мое имя пользователя Ted).

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

Jupyter делает здесь поиск по трем различным путям в поисках ядер. Он идет от пользователя , к Env , к системе . См. Этот документ для более подробной информации о путях, которые он ищет для каждой операционной системы.

Оба указанных выше ядра находятся в пути пользователя, что означает, что они будут доступны независимо от среды, в которой вы запускаете ноутбук Jupyter. Это также означает, что если на уровне среды есть другое ядро ​​'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, в которой вы запускаете jupyter notebook) все conda envs будут доступны автоматически. Для доступа к другим средам должны быть установлены соответствующие ядра. Вот ссылка .

ohailolcat
источник
Разве это не просто повторяет stackoverflow.com/a/48349338/570918 ?
Merv
Это выглядит как самый простой способ.
Decula
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, работающего в другой среде. Цитирую свою документацию :

Установка

Этот пакет предназначен для управления исключительно с использованием 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

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

Тогда все, что вам нужно сделать, это запустить сервер ноутбука Jupyter:

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, поэтому, пожалуйста, проголосуйте за него или улучшите его!

Январь-GLX
источник
7

Я столкнулся с той же проблемой, когда мое новое окружение conda myenvне могло быть выбрано в качестве ядра или нового ноутбука. И бег jupter notebookизнутри дал тот же результат.

Мое решение и то, что я узнал о том, как ноутбуки Jupyter распознают conda-envs и ядра:

Установка jupyter и ipython с myenvпомощью 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
Шри Самсон
источник
7

Это работало для меня в Windows 10 и последнем решении:

1) Войдите в среду conda (активируйте your_env_name)

2) установить conda -n your_env_name ipykernel

3) python -m ipykernel установить --user --name build_central --display-name "your_env_name"

(ПРИМЕЧАНИЕ: включите кавычки вокруг "your_env_name", в шаге 3)

плохой программист
источник
4

Это было очень неприятно, моя проблема заключалась в том, что в недавно созданной среде conda python36 jupyter отказался загружать «seaborn» - хотя seaborn был установлен в этой среде. Казалось, что он может импортировать множество других файлов из той же среды - например, numpy и pandas, но только не seaborn. Я пробовал многие исправления, предложенные здесь и в других темах, но безуспешно. Пока я не понял, что Jupyter не запускает ядро ​​python изнутри этой среды, а работает системный python как ядро. Несмотря на то, что неплохо выглядящие ядро ​​и 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, открытый с главного экрана, будет использовать системный питон. Я должен использовать меню ядра «Изменить ядро», чтобы выбрать среду Python.

Джордж Райт
источник
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
Январь-GLX
источник
1
на самом деле, обновление Jupyter и использование conda install nb_conda_kernelsработает лучше.
jan-
Просто обратите внимание, что python -m ipykernel installэто традиционный способ регистрации env, и он работает для других (не Conda) envs. Идея nb_conda_kernelsзаключается в том, что вам не нужно делать это вручную, пока вы устанавливаете ipykernel.
Merv
Да! Я превратил этот комментарий в отдельный ответ .
jan-
2

У меня была похожая проблема, и я нашел решение, которое работает для Mac, Windows и Linux. Требуется несколько ключевых ингредиентов, которые приведены в ответе выше:

Чтобы увидеть conda env в блокноте Jupyter, вам необходимо:

  • следующий пакет в вашей базе env:
    conda install nb_conda

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

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

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

В Лаборатории Jupyter вы можете видеть ту же самую среду, что и выше, и для Ноутбука, и для Консоли: введите описание изображения здесь

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

Безопасным способом является создание определенного env, из которого вы будете запускать свой пример команды envjupyter lab . Активируйте свой env. Затем добавьте пример jupyter lab extension jupyter 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 ; удалив его и переустановив из канала анаконды, вместо этого исправил это для меня.

Обновление : у меня снова была та же проблема с новым env, на этот раз я установил nb_conda_kernelsс канала anaconda , но мой jupyter_clientбыл с канала conda-forge . Деинсталляция nb_conda_kernelsи переустановка обновили это к каналу с более высоким приоритетом.

Поэтому убедитесь, что вы установили с правильных каналов :)

xyzzyqed
источник
Похоже, что вы можете смешать некоторые вещи. jupyterи nb_conda_kernelsдолжен быть установлен в одной среде - это то место, откуда вы всегда бежите jupyter notebook. Новые envs нужны только ipykernel, но не должны активироваться при запуске jupyter notebook.
Мэр
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.

Очевидно, что решение было открыть Jupyter из Anaconda Navigator, перейдя в мою среду в Средах: Откройте Anaconda Navigator, выберите среду в Средах, нажмите кнопку «Play» в выбранной среде и выберите «Открыть с помощью Jupyter Notebook».

Среды в Anaconda Navigator для запуска Jupyter из выбранной среды

albertopolis
источник
1
Посмотрите документацию по использованию ядер Conda. Вы запускаете Jupyter из env, в котором есть Jupyter; вы устанавливаете ipykernelвсе envs, которые хотите использовать в Jupyter в качестве ядер.
Merv