Окружающие среды Conda не отображаются в ноутбуке Jupyter

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

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

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

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

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

Ответ 1

Я не думаю, что другие ответы больше работают, так как конда перестала автоматически устанавливать среды как ядра 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

Ответ 2

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

(tensorflow) $ conda install jupyter

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

Ответ 3

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

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 в этом блокноте: enter image description here

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

У нас много борьбы с этой проблемой, и вот что работает для нас. Если вы используете канал 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:

enter image description here

Ответ 7

Резюме (TL;DR)

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

jupyter kernelspec remove python3

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

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

  • Вы создали среду conda
  • В этой среде установлен jupyter (который также устанавливает ipykernel)
  • Когда вы запускаете команду jupyter notebook и создаете новую записную книжку, щелкая "python3" в выпадающем меню "New", эта записная книжка выполняет 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

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" установлен не для всех по умолчанию, поэтому не все сталкиваются с этой проблемой.

Ответ 8

    $ conda install nb_conda_kernels

(в среде conda, в которой вы запускаете jupyter notebook) все conda envs будут доступны автоматически. Для доступа к другим средам должны быть установлены соответствующие ядра. Здесь ссылка.

Ответ 9

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

Мое решение и то, что я узнал о том, как ноутбуки 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

Ответ 10

Хотя ответ @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

Ответ 11

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

Ответ 12

Я установил nb_conda во все мои conda envs, но они все равно не будут отображаться как выбираемые ядра в ноутбуке jupyter. Я работал на jupyter notebook с базы jupyter notebook.

Чтобы это исправить, мне также пришлось установить nb_conda и nb_conda_kernels в базу. Тогда, наконец, все мои envs будут отображаться как ядра.

Надеюсь, это кому-нибудь поможет.

Ответ 13

nb_conda_kernels пакет является наилучшим способом использовать jupyter с conda. С минимальными зависимостями и конфигурацией это позволяет вам использовать другие среды conda из ноутбука Jupyter, работающего в другой среде. Цитирую свою документацию:

Монтаж

Этот пакет предназначен для управления исключительно с использованием conda. Он должен быть установлен в среде, из которой вы запускаете Jupyter Notebook или JupyterLab. Это может быть ваша base среда 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

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

Тогда все, что вам нужно сделать, это запустить сервер ноутбука 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

enter image description here


Несмотря на множество ответов и усилия @merv по их улучшению, найти хороший по-прежнему сложно. Я сделал это CW, поэтому, пожалуйста, проголосуйте за него или улучшите его!

Ответ 14

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

Ответ 15

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

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

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

3) Python -m установка ipykernel --user - -n ame build_central --display -n ame "your_env_name"

(ПРИМЕЧАНИЕ: не игнорируйте эти точки с запятой в "your_env_name", на шаге 3)

Ответ 16

В моем случае, используя 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 из выбранной среды