Conda环境没有出现在Jupyter Notebook中

时间:2016-09-20 21:50:45

标签: anaconda jupyter jupyter-notebook conda

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

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

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

我看了这个问题: Link Conda environment with Jupyter Notebook 但是我的计算机上没有~/Library/Jupyter/kernels这样的目录!此Jupyter目录只有一个名为runtime的子目录。

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

23 个答案:

答案 0 :(得分:386)

我不认为其他答案正在发挥作用,因为conda停止自动将环境设置为jupyter内核。您需要以下列方式为每个环境手动添加内核:

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

如此处所述:http://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments 另请参阅this issue

附录: 您应该可以使用nb_conda_kernels安装conda install nb_conda_kernels包以自动添加所有环境,请参阅https://github.com/Anaconda-Platform/nb_conda_kernels

答案 1 :(得分:92)

令人讨厌的是,在您的tensorflow环境中,您可以运行jupyter notebook 而无需在该环境中安装jupyter 。跑吧

(tensorflow) $ conda install jupyter

并且tensorflow环境现在应该在您condaPython [conda env:tensorflow]环境中的Jupyter笔记本中显示为Traceback (most recent call last): from crossbar.controller.cli import run File "/Users/mahesh/.virtualenvs/testproject/lib/python2.7/site-packages/crossbar/controller/cli.py", line 49, in <module> from autobahn.twisted.choosereactor import install_reactor File "/Users/mahesh/.virtualenvs/testproject/lib/python2.7/site-packages/autobahn/twisted/__init__.py", line 44, in <module> from autobahn.twisted.websocket import \ File "/Users/mahesh/.virtualenvs/testproject/lib/python2.7/site-packages/autobahn/twisted/websocket.py", line 42, in <module> from autobahn.wamp import websocket File "/Users/mahesh/.virtualenvs/testproject/lib/python2.7/site-packages/autobahn/wamp/websocket.py", line 31, in <module> from autobahn.websocket import protocol File "/Users/mahesh/.virtualenvs/testproject/lib/python2.7/site-packages/autobahn/websocket/protocol.py", line 362, in <module> class WebSocketProtocol(object): File "/Users/mahesh/.virtualenvs/testproject/lib/python2.7/site-packages/autobahn/websocket/protocol.py", line 550, in WebSocketProtocol _batched_timer = txaio.make_batched_timer( AttributeError: 'module' object has no attribute 'make_batched_timer'

答案 2 :(得分:70)

如果您的环境没有显示,则可能没有在安装Jupyter的环境中安装nb_conda_kernelsAnaconda's documentation表示

  

nb_conda_kernels应安装在环境中   你运行Jupyter Notebook或JupyterLab。这可能是你的基础康茄舞   环境,但它不一定是。例如,如果环境   notebook_env包含笔记本包,然后运行

conda install -n notebook_env nb_conda_kernels
     

您希望在笔记本中访问的任何其他环境必须具有   安装了适当的内核包。例如,访问一个   在Python环境中,它必须有ipykernel包; e.g。

conda install -n python_env ipykernel
     

要使用R环境,它必须具有r-irkernel包; e.g。

conda install -n r_env r-irkernel
     

对于其他语言,必须安装their corresponding kernels

请注意,在最初发布此内容时,可能会导致nb_conda not yet supporting Python 3.6 environments

如果其他解决方案无法让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: enter image description here

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

答案 3 :(得分:45)

我必须运行前3个答案中提到的所有命令才能使此工作正常进行:

conda install jupyter
conda install nb_conda
conda install ipykernel
python -m ipykernel install --user --name mykernel

答案 4 :(得分:43)

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

答案 5 :(得分:8)

我们在这个问题上遇到了很多困难,这对我们有用。如果您使用conda-forge channel,请务必确保使用conda-forge中的更新软件包,即使在Miniconda root环境中也是如此。

所以安装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中,只要在ipykernel文件中列出custom_env.yml进行安装,如下例所示:

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

为了证明它适用于一堆自定义环境,这里是Windows的屏幕抓取:

enter image description here

答案 6 :(得分:7)

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

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

使用conda:

将jupyter和ipython安装到myenv
conda install -n myenv ipython jupyter

之后,在jupter notebook列出的myenv作为内核以及之前的环境运行{。}}。

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

激活环境后运行笔记本:

source activate myenv
jupyter notebook

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

python 2
python 3
R

答案 7 :(得分:7)

    $ conda install nb_conda_kernels

(在运行jupyter Notebook的conda环境中)将自动使所有conda env可用。为了访问其他环境,必须安装相应的内核。这是ref

答案 8 :(得分:7)

摘要(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)"

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

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

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

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

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

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

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

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

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

由于this GitHub issue comment(请看第一个响应),您可以使用以下命令删除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',因此并非所有人都遇到此问题。

答案 9 :(得分:4)

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

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

答案 10 :(得分:4)

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

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

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

  • 在您创建的每个环境中的以下程序包:
    conda install ipykernel

  • 检查jupyter_notebook_config.py的配置n
    首先检查您在jupyter_notebook_config.py指定的位置中是否有jupyter --paths
    如果不存在,请通过运行jupyter notebook --generate-config
    创建它 添加或确保您具有以下内容:c.NotebookApp.kernel_spec_manager_class='nb_conda_kernels.manager.CondaKernelSpecManager'

您可以在终端中看到的环境: enter image description here

在Jupyter Lab上,您可以在笔记本电脑和控制台上看到与上述相同的环境: enter image description here

打开笔记本时,您可以选择环境: enter image description here

安全的方法是创建一个特定的环境,从中可以运行example of env jupyter lab命令。激活您的环境。然后添加jupyter Lab扩展example jupyter lab extension。然后,您可以运行jupyter lab

答案 11 :(得分:4)

@coolscitist's answer为我工作时,还有一种方法不会使完整的jupyter软件包+ deps干扰您的内核环境。 ipython docs中对此进行了描述,并且(我怀疑)仅当您在非基本环境中运行笔记本服务器时才需要。

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

答案 12 :(得分:3)

要添加所需的环境,请在Anaconda Prompt中:

  1. conda activate <env name>

  2. conda install -c anaconda ipykernel

  3. python -m ipykernel install --user --name=<env name>

    在conda 4.8.3上测试

答案 13 :(得分:3)

这真令人沮丧,我的问题是,在新建的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。

答案 14 :(得分:2)

我在使用 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

答案 15 :(得分:1)

这在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”处的分号)

答案 16 :(得分:1)

特定于渠道的问题

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

更新:我在新环境中也遇到了同样的问题,这次我确实是从 anaconda 频道安装了nb_conda_kernels,但我的{{1} }来自 conda-forge 频道。卸载jupyter_client并重新安装会将其更新到更高优先级的频道。

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

答案 17 :(得分:1)

首先,您需要激活环境。

pip install ipykernel

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

python -m ipykernel install --name = my_env

答案 18 :(得分:0)

我所有的conda env中都安装了nb_conda,但是在jupyter笔记本中它们仍然不会显示为可选内核。 我从conda base运行jupyter notebook

要解决此问题,我还必须在基础中安装nb_condanb_conda_kernels然后,我的所有环境最终都会显示为内核。

希望这对某人有帮助。

答案 19 :(得分:0)

遵循instructions in the iPython documentation,将不同的conda环境添加到Jupyter Notebook中可供选择的内核列表中。总之,在安装ipykernel之后,您必须在终端中逐个激活每个conda环境并运行命令python -m ipykernel install --user --name myenv --display-name "Python (myenv)",其中myenv是要添加的环境(内核)。

答案 20 :(得分:0)

nb_conda_kernels包是将jupyterconda一起使用的最佳方法。以最小的依赖关系和配置,它使您可以使用在不同环境中运行的jupyter笔记本中的其他conda环境。引用其documentation

  

安装

     

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

     

对于其他语言,必须安装其corresponding kernels

然后您需要做的就是启动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

enter image description here


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

答案 21 :(得分:0)

仅使用环境变量:

python -m ipykernel install --user --name $(basename $VIRTUAL_ENV)

答案 22 :(得分:-1)

在我的情况下,通过运行命令

使用Windows 10和conda 4.6.11
conda install nb_conda

conda install -c conda-forge nb_conda_kernels
使用conda jupyter notebook从同一命令行打开Jupyter后,在终端环境处于活动状态时从终端

没有执行该操作。

显然,解决方案是通过在“环境”中转到我的环境从Anaconda Navigator中打开Jupyter:打开Anaconda Navigator,在“环境”中选择环境,按所选环境上的“播放”按钮,然后选择“使用Jupyter打开”笔记本”。

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