Jupyter Notebook中未显示Conda环境


362

我安装了Anaconda(使用Python 2.7),并在名为的环境中安装了Tensorflow tensorflow。我可以在该环境中成功导入Tensorflow。

问题在于Jupyter Notebook无法识别我刚刚创建的新环境。无论我从GUI导航或命令行启动Jupyter笔记本电脑tensorflowENV中,只有一个名为菜单内核Python [Root],并Tensorflow无法导入。当然,我多次单击该选项,保存了文件,然后重新打开,但是这些无济于事。

奇怪的是,当我打开CondaJupyter主页上的选项卡时,可以看到两种环境。但是当我打开Files选项卡并尝试new使用笔记本时,我仍然只剩下一个内核。

我看着这个问题: 用Jupyter Notebook连接Conda环境 但是~/Library/Jupyter/kernels我的计算机上没有这样的目录!该Jupyter目录只有一个名为的子目录runtime

我真的很困惑。Conda环境是否应该自动成为内核?(我按照https://ipython.readthedocs.io/en/stable/install/kernel_install.html手动设置了内核,但被告知ipykernel找不到。)


43
conda install ipykernel在该环境中运行。
Thomas K

1
conda install ipykernel似乎安装jupyter在环境中...我缺少什么吗?
Dror

1
大概ipykernel有jupyter作为依赖项吗?
kevinkayaks 18/09/18

1
似乎不再起作用了...请参阅以下来自安德里亚斯的回答
Casey L

@ThomasK仅在nb_conda使用或根据问题建议手动设置内核时才有效。否则,实际上会使事情搞砸了。可执行文件jupyter将指向环境内部的可执行文件,但是系统的文件jupyter-notebook将被启动(如果已安装),因此不将环境与默认内核一起使用。
lumbric

Answers:


542

我认为其他答案不再有效,因为conda停止自动将环境设置为jupyter内核。您需要通过以下方式为每个环境手动添加内核:

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

如此处所述:http : //ipython.readthedocs.io/zh-CN/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年4月(,)Python 3.6.4,Installing 对我有用。conda 4.3.27jupyter 4.4.0
wflynny18年

3
更正我先前的评论:新的环境不会仅在第一次出现。停用并再次激活环境后,再打开jupyter,则它会正确显示。
R71

23
如果这对您不起作用,请尝试运行conda install ipykernel此答案,假设您已经在环境中安装了该答案。
肯·迈尔斯

150

如果您的环境没有显示出来,则可能您没有在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: 在此处输入图片说明

请注意,如果您在许多环境中执行此操作,则可能不希望将Jupyter安装到每个环境中而增加存储空间(取决于您的系统)。


您好,抱歉再次打开该线程。但是我按照这里的建议尝试了一切,但仍然没有在jupyter中看到tensorflow env。我在tensorflow环境中安装了jupyter。我在那里安装了python 3.6.1。我尝试安装conda nb_conda,但显示与py3.6冲突。这样一来,我尝试过的所有其他东西都无法安装,并且似乎无法正常工作。有什么建议吗?
Baktaawar

好。我再次检查。我的问题是,当我的jupyter用Python 3内核打开时,无法导入任何模块。我不确定为什么会这样。而且它也没有显示其他环境
-Baktaawar

2
@Baktaawar,请参阅我的更新答案,以演示如何在笔记本中使用python 3.6。您可以运行python 3.6环境,只需在活跃的环境下启动jupyter。可以将Conda环境视为独立的python安装。如果将Jupyter安装到系统python中,您同样只会看到一个python内核选项。 nb_conda的目的仅是为了“没有从Jupyter内部提供Conda环境和程序包访问扩展名”,因此您可以从所选的python安装中运行Jupyter。
Steven C. Howell

1
@ StevenC.Howell感谢您解决我的问题。我认为您仍然需要提及,您需要ipykernel在要用作内核的每个env中安装它们。
MERV

1
嗯,我不确定为什么没有它会起作用。没错,他们明确指出应该安装它。我已将其添加到答案中。谢谢!
史蒂文·霍维尔

112

恼人的是,在你的tensorflow环境,你可以运行jupyter notebook ,无需安装jupyter在那样的环境。赶紧跑

(tensorflow) $ conda install jupyter

tensorflow环境现在应该在你的任何启动Jupyter笔记本可见conda的环境,就像这样Python [conda env:tensorflow]


6
我遇到了与Thomas K相同的问题,Octavius共享的解决方案也解决了我的问题。但是,有一个陷阱,如果您具有Python 3版本的Anaconda,那么您将只能看到当前的活动环境,并且应该具有自己的Jupyter。但是,如果您安装Python 2版本的Anaconda,它将可以处理所有环境。
rkmalaiya

6
您也可以在蟒蛇版本的蟒蛇中执行“ conda install nb_conda”,以从Jupyter本身管理环境。
rkmalaiya

7
@rkmalaiya是正确的。如果您运行的是Miniconda3或Anaconda3,请conda install nb_conda在您购买的conda环境之一(已安装jupyter笔记本电脑)中执行。然后,您可以在jupyter笔记本浏览器中切换内核/ conda env。
Harsha Manjunath

1
可以报​​告此方法在2018年9月与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

9
这对我也很有效,但是我不需要conda install nb_conda
Ken Myers

3
惊人的蒸馏!
黄保廷

1
我只需要前3个命令来显示环境的内核作为一个选项,当我运行jupyter lab特定的环境内
伊戈尔Fobia

3
也为我工作。天哪,这真令人沮丧。
Trevor Bye

4
您不需要nb_conda!;)
Prayson W. Daniel

48

只需conda install ipykernel在新环境中运行,就可以使用此环境获得内核。即使您在每个环境中安装了不同的版本,也不会再次安装jupyter Notebook,此方法仍然有效。您可以从任何环境中启动笔记本,您将能够看到新添加的内核。


10
截至2018年1月,这是最好的答案。如果您只是conda install ipykernel在conda环境中,Jupyter应该在启动时自动发现您的内核。最坏的情况是,您可以python -m ipykernel install --user --name mykernel用来手动生成内核,但是如果它已经被自动发现,则不希望这样做,否则它将在内核列表中显示两次。
Colllin,

2
这也将安装Jupiter及其所有依赖项。它可以工作,但又不是最佳选择
Quickbeam2k1'3

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)"

无论您jupyter notebook从哪个环境启动,这都将为您提供使用test_env环境的选项。但是,使用“ python3”启动笔记本仍将使用基本环境中的Python安装。

可能发生的是存在一个用户python3内核。运行命令jupyter kernelspec list以列出所有环境。例如,如果您有Mac,则会返回以下信息(我的用户名为Ted)。

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

Jupyter在这里所做的事情是通过三种不同的途径搜索内核。它从用户环境,再到系统。有关在每个操作系统中搜索路径的更多详细信息,请参见本文档

上面的两个内核都在用户路径中,这意味着无论您从哪个环境启动jupyter笔记本电脑,它们都将可用。这也意味着,如果在环境级别存在另一个“ python3”内核,那么您将永远无法访问它。

对我来说,从启动笔记本的环境中选择“ python3”内核应该在该环境中执行Python更为有意义。

您可以通过在操作系统的Env搜索路径中查找来查看是否有另一个“ python3”环境(请参见上面文档的链接)。对于我(在Mac上),我发出了以下命令:

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

我确实在那里列出了“ python3”内核。

感谢这个GitHub问题注释(请看第一个响应),您可以使用以下命令删除User'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


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中显示为可用内核,只要ipykernelcustom_env.yml文件中列出了要安装的环境即可,例如以下示例:

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

只是为了证明它可以在一系列自定义环境中使用,下面是Windows的屏幕抓图:

在此处输入图片说明


8

nb_conda_kernels包是用最好的方式jupyterconda。以最小的依赖关系和配置,它使您可以使用在不同环境中运行的jupyter笔记本中的其他conda环境。引用其文档

安装

该软件包设计为仅使用conda进行管理。它应该安装在运行Jupyter Notebook或JupyterLab的环境中。这可能是您的baseconda环境,但不一定如此。例如,如果环境 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

在此处输入图片说明


尽管有很多答案,并且@me​​rv努力改善它们,但仍然很难找到一个好的答案。我制作了这本CW,所以请投票给它,或者对其进行改进!



7

我遇到了同样的问题myenv,无法将我的新conda环境选择为内核或新笔记本。jupter notebook从env内​​部运行也得到了相同的结果。

我的解决方案以及有关Jupyter笔记本如何识别conda-envs和内核的知识:

使用conda安装jupyter和ipython myenv

conda install -n myenv ipython jupyter

之后,jupter notebookmyenv我之前的环境以及列出为内核的所有env外部运行。

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

激活环境后运行笔记本:

source activate myenv
jupyter notebook

隐藏我所有其他环境内核,只显示我的语言内核:

python 2
python 3
R

6

这在Windows 10和最新解决方案中对我有用:

1)进入该conda环境(激活your_env_name)

2)conda install -n your_env_name ipykernel

3)python -m ipykernel install --user --name build_central --display-name“ your_env_name”

(注意:在第3步中,在“ your_env_name”周围加上引号)


4

这真令人沮丧,我的问题是,在新建的conda python36环境中,jupyter拒绝加载“ seaborn”-即使将seaborn安装在该环境中。它似乎能够从同一环境中导入大量其他文件,例如numpy和pandas,但不是seaborn。我尝试了此处和其他线程上建议的许多修复程序,但均未成功。直到我意识到Jupyter不在该环境中运行内核python而是将系统python作为内核运行。即使环境中已经存在外观不错的kernel和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。我必须使用内核菜单“更改内核”来选择环境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

1
实际上,更新jupyter和使用conda install nb_conda_kernels效果更好。
jan-glx

请注意,这python -m ipykernel install是注册环境的传统方法,并且适用于其他(非Conda)环境。背后的想法nb_conda_kernels是,只要您安装,就不需要手动执行此操作ipykernel
MERV

是! 我把这个评论变成了这个独立的答案
jan-glx

2

我遇到了类似的问题,并且找到了适用于Mac,Windows和Linux的解决方案。它只包含上面答案中的几个关键要素:

要在Jupyter笔记本中查看conda env,您需要:

  • 您的基本环境中的以下软件包:
    conda install nb_conda

  • 您创建的每个环境中的以下软件包:
    conda install ipykernel

  • 检查的configurationn 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'

您可以在终端中看到的环境: 在此处输入图片说明

在Jupyter Lab上,您可以看到与Notebook和Console相同的环境: 在此处输入图片说明

您可以在打开笔记本时选择环境: 在此处输入图片说明

安全的方法是创建一个特定的环境,您将从中运行环境命令示例jupyter lab。激活您的环境。然后添加jupyter lab extension 示例jupyter lab extension。那你就可以跑 jupyter lab


1

请遵循iPython文档中的说明,将不同的conda环境添加到内核列表中,以在Jupyter Notebook中进行选择。总之,安装后ipykernel,您必须在终端中逐个激活每个conda环境,然后运行命令python -m ipykernel install --user --name myenv --display-name "Python (myenv)"myenv您要添加的环境(内核)在哪里。


1

可能针对特定频道的问题

我再次遇到这个问题,结果发现我是从conda-forge频道安装的;删除它并从anaconda频道重新安装,而不是为我修复了它。

更新:我再次在新的环境中遇到了同样的问题,这次我确实是nb_conda_kernelsanaconda渠道安装的,但是我jupyter_client是从conda-forge渠道安装的。卸载nb_conda_kernels和重新安装会将其更新为更高优先级的频道。

因此,请确保您已从正确的渠道安装:)


听起来您可能将某些事情混为一谈。jupyternb_conda_kernels应安装在一个env中-这是您始终运行的jupyter notebook地方。新环境仅需要ipykernel,但在运行时不应激活jupyter notebook
Merv

1
我知道,它在新机器上。
xyzzyqed

1
好的。我修改了您的答案,主要是为了可以改变投票数,同时也弄清您所说的conda频道(不是问题- 默认值anaconda)。如果我错过了发生的事情,请随时对其进行进一步的编辑。
merv

-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打开Jupyter的:打开Anaconda Navigator,在Environments中选择环境,按所选环境上的“播放”按钮,然后选择“使用Jupyter Notebook打开”。

Anaconda Navigator中的环境以从所选环境中运行Jupyter


1
查看有关如何使用Conda内核的文档。您从具有Jupyter的环境中启动Jupyter;您将ipykernel所有希望在Jupyter中使用的env安装为内核。
Merv
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.