我安装了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。)


当前回答

首先你需要激活你的环境。

pip install ipykernel

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

python -m ipykernel install --name = my_env

其他回答

我们在这个问题上做了很多努力,以下是对我们有效的方法。如果你使用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中,只要你的custom_env中列出了ipykernel以供安装。Yml文件,就像这个例子:

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

为了证明它适用于许多自定义环境,这里有一个Windows屏幕截图:

可能的特定渠道问题

我有这个问题(再次),原来我从conda-forge频道安装;将其移除并从蟒蛇通道重新安装,而不是为我修复它。

更新:我在一个新的env中再次遇到了同样的问题,这次我确实从anaconda通道安装了nb_conda_kernels,但我的jupyter_client来自conda forge通道。卸载nb_conda_kernels并重新安装会将其更新到更高优先级的通道。

所以请确保你从正确的渠道安装:)

虽然@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

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

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所增加的存储空间可能是不可取的(取决于您的系统)。

只要在你的新环境中运行conda install ipykernel,只有这样你才能得到一个带有这个env的内核。即使你在每个envs中安装了不同的版本,它也不会再次安装jupyter笔记本。你可以从任何环境开始你的笔记本,你将能够看到新添加的内核。