我安装了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。)
如果您的环境没有显示,请确保您已经安装
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所增加的存储空间可能是不可取的(取决于您的系统)。