Conda环境在Jupyter Notebook中未显示

567

我安装了Anaconda(带有Python 2.7),并在名为tensorflow的环境中安装了Tensorflow。我可以在那个环境中成功导入Tensorflow。

问题在于Jupyter Notebook不能识别我刚刚创建的新环境。无论我从GUI Navigator还是从tensorflow env的命令行内部启动Jupyter Notebook,菜单中只有一个称为Python [Root]的内核,无法导入Tensorflow。当然,我多次点击该选项,保存文件,重新打开,但这些都没有帮助。

奇怪的是,当我在Jupyter的主页上打开Conda标签时,我可以看到这两个环境。但是当我打开Files标签,并尝试new一个notebook时,我仍然只得到一个内核。

我看了一下这个问题: Link Conda environment with Jupyter Notebook 但是我的电脑上不存在~/Library/Jupyter/kernels这样的目录!这个Jupyter目录只有一个名为runtime的子目录。

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


6
conda install ipykernel 看起来会在环境中安装 jupyter... 我有什么遗漏吗? - Dror
1
据推测,ipykernel依赖于Jupyter? - kevinkayaks
4
似乎不再起作用了...请看下面Andreas的回答。 - Casey L
1
@ThomasK,这仅在使用nb_conda或手动设置内核时才有效,如问题中所建议的那样。否则,它实际上会使事情变得非常混乱。可执行文件jupyter将指向环境内部的可执行文件,但系统的jupyter-notebook将被启动(如果已安装),因此不会使用默认内核的环境。 - lumbric
1
我在这个问答中编写了一份全面的调试指南:https://dev59.com/_FMH5IYBdhLWcg3w1Dn0#58068850 - lumbric
请参见以下链接:https://dev59.com/Gl0a5IYBdhLWcg3wTHFt - Jason S
26个回答

11

这是一个旧的帖子,但在Anaconda提示符下运行,在我感兴趣的环境中,对我有用:

ipython kernel install --name "myenvname" --user

这对我很有帮助。以前,我是用以下方式安装__ipykernel__:python -m ipykernel install --user --name=<environment-name>,但是这种方法似乎不再起作用了,即使该环境出现在内核选项中。 - datalifenyc
这个方法完美地运行了。在尝试了这篇文章中的方法之后:https://dev59.com/jVkS5IYBdhLWcg3woIFR#43197286。环境仍然不可见。但是,您的技巧最终似乎使其在刷新页面后即使在 jupyter lab 工作区内也能正常工作。 - Dan

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

只要在您的custom_env.yml文件中列出了ipykernel的安装,您的自定义环境就会出现在Jupyter中作为一个可用的内核,就像这个示例一样:

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

为了证明它可以与一堆自定义环境一起工作,这是来自Windows的屏幕截图:

在此输入图片描述


7

我遇到了同样的问题,我的新conda环境myenv无法作为内核或新笔记本进行选择。在环境中运行jupter notebook也给出了相同的结果。

我的解决方案以及我对Jupyter笔记本识别conda-envs和内核的了解:

使用conda将jupyter和ipython安装到myenv中:

conda install -n myenv ipython jupyter

之后,在任何未列出 myenv 的环境中运行 jupyter notebook,以及之前创建的其他环境。

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

一旦我激活环境,就可以运行笔记本:

source activate myenv
jupyter notebook

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

python 2
python 3
R

6
我遇到了类似的问题,找到了一个在Mac、Windows和Linux上都有效的解决方案。需要以下几个关键步骤:
要在Jupyter notebook中看到conda环境,你需要:
  • 在基础环境中安装以下软件包:
    conda install nb_conda
  • 在每个创建的环境中安装以下软件包:
    conda install ipykernel
  • 检查jupyter_notebook_config.py的配置
    首先检查是否在jupyter --paths给出的位置之一中有jupyter_notebook_config.py
    如果不存在,则通过运行jupyter notebook --generate-config来创建它
    添加或确保有以下内容:c.NotebookApp.kernel_spec_manager_class='nb_conda_kernels.manager.CondaKernelSpecManager'
你可以在终端中看到的环境: enter image description here 在Jupyter Lab中,您可以在Notebook和Console中看到与上文相同的环境: enter image description here 当您打开一个笔记本时,可以选择您的环境: enter image description here 安全的方法是从中创建一个特定的环境,您将从该环境运行 env示例jupyter lab 命令。激活您的环境。然后添加jupyter lab扩展例如jupyter lab扩展。然后您就可以运行 jupyter lab 了。

c.NotebookApp.kernel_spec_manager_class=.. 添加到 Jupyter 配置中解决了我在 GCP 的 AI 平台上的问题。我的猜测是安装了 nb_conda_kernels 包,但它没有配置为与 Jupyter 协同工作。 - Marek Grzenkowicz

5
这真是让人沮丧。我的问题是,在一个新构建的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。我必须使用Kernel菜单中的“更改内核”来选择环境Python。


4

虽然@coolscitist's answer对我有用,但还有一种方法不会在内核环境中添加完整的jupyter包+依赖项。 它在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
1
请注意,python -m ipykernel install 是注册环境的传统方法,并适用于其他(非 Conda)环境。nb_conda_kernels 的理念是,只要安装了 ipykernel,就无需手动执行此操作。 - merv
是的!我将这个评论转换成了独立回答 - jan-glx

4

首先,您需要激活您的环境。

pip install ipykernel

接下来,您可以输入以下命令将您的虚拟环境添加到Jupyter中:

python -m ipykernel install --name = my_env

安装ipykernel后,可以运行以下命令:python -m ipykernel install --user --name myenv --display-name "Python (myenv)" - SanMelkote

4

对于conda 4.5.12而言,对我有效的方法是(我的虚拟环境叫作nwt):

conda create --name nwt python=3

然后我需要激活虚拟环境并安装ipykernel。

activate nwt
pip install ipykernel

那对我有用的方法是:

python -m ipykernel install --user --name env_name --display-name "name of your choosing."

举个例子,我将“nwt”作为虚拟环境的显示名称。在运行以上命令之后,再次在Anaconda提示符中运行“jupyter notebook”。我得到的是:new kernel


3
请按照以下步骤将不同的conda环境添加到Jupyter Notebook内核选择列表中:

1.请参阅iPython文档中的说明。(链接地址)

2.安装ipykernel后,您需要在终端中逐个激活每个conda环境,并运行命令python -m ipykernel install --user --name myenv --display-name "Python (myenv)",其中myenv是您要添加的环境(内核)的名称。请注意保留HTML标记。

2

我想补充之前的答案:如果安装nb_conda_kernelsipywidgetsipekernel无效,请确保您的Jupyter版本是最新的。我的环境在一切正常的情况下突然停止显示,并且在我通过anaconda navigator简单地更新jupyter后恢复了工作。


这并不是对问题的回答。一旦您拥有足够的声望,您将能够评论任何帖子; 相反,请提供不需要询问者澄清的答案. - 来自审查 - n4321d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接