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

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

奇怪的是,当我打开Jupyter首页上的Conda标签时,我可以看到这两个环境。但是当我打开文件选项卡,并尝试新建一个笔记本时,我仍然只有一个内核。

我看了这个问题: 连接Conda环境与Jupyter Notebook 但是在我的电脑上没有~/Library/Jupyter/kernels这样的目录!这个Jupyter目录只有一个称为runtime的子目录。

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


当前回答

我也遇到了同样的问题,我的新conda环境myenv不能被选为内核或新笔记本。在env中运行jupter notebook也得到了相同的结果。

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

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

conda install -n myenv ipython jupyter

在那之后,在任何env之外运行jupter notebook时,将myenv与我以前的环境一起列为内核。

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

启动环境后运行笔记本:

source activate myenv
jupyter notebook

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

python 2
python 3
R

其他回答

恼人的是,在你的tensorflow环境中,你可以运行jupyter notebook,而无需在该环境中安装jupyter。你就跑

(tensorflow) $ conda install jupyter

tensorflow环境现在应该在Jupyter notebook中可见,在任何conda环境中启动,类似于Python [conda env:tensorflow]。

我在使用vscode服务器时遇到了这个问题。 在名为“base”的conda环境中,我安装了1.2.0版本的opennmt-py,但我想在conda环境“opennmt2”中运行jupyter notebook,其中包含使用opennmt-py 2.0的代码。 我通过在conda(opennmt2)中重新安装jupyter解决了这个问题。

conda install jupyter

重新安装后,在opennmt2环境中执行jupyter notebook将执行新安装的jupyter

where jupyter 
/root/miniconda3/envs/opennmt2/bin/jupyter
/root/miniconda3/bin/jupyter

对于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'作为虚拟env的显示名称。在运行上面的命令之后。再次在Anaconda Prompt中运行“jupyter notebook”。我得到的是:

这是一个旧线程,但是在Anaconda提示符中运行它,在我感兴趣的环境中,对我来说是有效的:

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

如果您的环境没有显示,请确保您已经安装

nb_conda_kernels在Jupyter环境中 你想要访问的Python环境中的ipykernel和ipywidgets(注意,ipywidgets是为了启用一些Juptyer功能,而不是环境可见性,请参阅相关文档)。

Anaconda的文档表明

nb_conda_kernels should be installed in the environment from which you run Jupyter Notebook or JupyterLab. This might be your base conda environment, but it need not be. For instance, if the environment notebook_env contains the notebook package, then you would run conda install -n notebook_env nb_conda_kernels Any other environments you wish to access in your notebooks must have an appropriate kernel package installed. For instance, to access a Python environment, it must have the ipykernel package; e.g. conda install -n python_env ipykernel To utilize an R environment, it must have the r-irkernel package; e.g. conda install -n r_env r-irkernel For other languages, their corresponding kernels must be installed.

除了Python,通过安装适当的*内核包,Jupyter可以访问大量其他语言的内核,包括R、Julia、Scala/Spark、JavaScript、bash、Octave,甚至MATLAB。


请注意,在最初发布这篇文章的时候,可能是nb_conda还不支持Python 3.6环境造成的。

如果其他解决方案无法让Jupyter识别其他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所增加的存储空间可能是不可取的(取决于您的系统)。