Conda 环境未显示在 Jupyter Notebook 中

Posted

技术标签:

【中文标题】Conda 环境未显示在 Jupyter Notebook 中【英文标题】:Conda environments not showing up in Jupyter Notebook 【发布时间】:2017-01-28 23:29:50 【问题描述】:

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

问题是 Jupyter Notebook 无法识别我刚刚创建的新环境。无论我从 GUI Navigator 还是从命令行 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。)

【问题讨论】:

conda install ipykernel 似乎在环境中安装了jupyter...我错过了什么吗? 大概 ipykernel 有 jupyter 作为依赖? 似乎不再起作用...请参阅下面 Andreas 的回答 @ThomasK 仅在使用 nb_conda 或按照问题中的建议手动设置内核时才有效。否则它实际上会搞砸很多事情。可执行文件jupyter 将指向环境中的一个可执行文件,但系统的jupyter-notebook 将被启动(如果已安装),因此不会使用默认内核的环境。 我在这个问答中写了一个全面的调试指南:***.com/questions/58068818/… 【参考方案1】:

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

(tensorflow) $ conda install jupyter

tensorflow 环境现在应该在 Jupyter Notebooks 中可见,该笔记本在您的任何conda 环境中启动,类似于Python [conda env:tensorflow]

【讨论】:

我遇到了和 Thomas K 一样的问题,Octavius 分享的解决方案也解决了我的问题。但是,有一个问题,如果您有 Python 3 版本的 Anaconda,那么您将只能看到您当前的活动环境,并且它应该有自己的 Jupyter。但是如果你安装 Python 2 版本的 Anaconda,它可以处理所有的环境。 您也可以在 Python2 版本的 anaconda 中执行“conda install nb_conda”来从 Jupyter 本身管理您的环境。 @rkmalaiya 是正确的。如果您正在运行 Miniconda3 或 Anaconda3,请在您的源 conda 环境之一(安装了 jupyter notebook)中执行conda install nb_conda。然后,您可以在 jupyter notebook 浏览器中切换内核/conda 环境。 可以报告此方法在 2018 年 9 月适用于 Anaconda 5.2 Python 3.6 这是一个糟糕的答案,因为它鼓励用户在每个环境中安装 Jupyter,这是完全没有必要的。这个工作的原因是ipykernel(这是唯一真正需要的东西)是jupyter的依赖项。【参考方案2】:

如果您的环境未显示,请确保您已安装

nb_conda_kernels 在 Jupyter 环境中 ipykernelipywidgets 在您要访问的 Python 环境中(请注意,ipywidgets 是启用某些 Juptyer 功能,而不是环境可见性,请参阅related docs)。

Anaconda's documentation 声明

nb_conda_kernels 应安装在安装环境中 你运行 Jupyter Notebook 或 JupyterLab。这可能是你的基础 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

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

除了Python,通过安装适当的*kernel包,Jupyter可以从a ton of other languages访问内核,包括R、Julia、Scala/Spark、javascript、bash、Octave,甚至MATLAB.


请注意,在最初发布此内容时,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:

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

【讨论】:

嗨 很抱歉再次打开这个帖子。但是我按照这里的建议尝试了所有方法,但仍然没有在 jupyter 中看到 tensorflow env。我在 tensorflow 环境中安装了 jupyter。我在那里安装了 python 3.6.1。我尝试安装 conda nb_conda 但它说与 py3.6 冲突。所以没有安装其余我尝试过的所有其他东西似乎都不起作用。有什么建议吗? 好的。我又检查了一遍。我的问题是我的 jupyter 在使用 Python 3 内核打开时无法导入任何模块。我不确定为什么会这样。而且它也没有显示其他环境 @Baktaawar,请参阅我更新的答案,演示如何在笔记本中使用 python 3.6。您可以运行 python 3.6 环境,您只需要在该环境处于活动状态的情况下启动 jupyter。 Conda 环境可以被认为是自包含的 python 安装。如果你将 Jupyter 安装到你的系统 python 中,你同样只会看到一个 python 内核选项。 nb_conda 的目的只是为了“[提供]来自 Jupyter 内的 Conda 环境和包访问扩展”,而不是让你可以从你选择的 python 安装中运行 Jupyter。 @StevenC.Howell 感谢您解决我的问题。我认为您仍然需要提到ipykernel 需要安装在您要用作内核的每个环境中。 嗯,我不知道为什么没有它。你是对的,他们明确表示应该安装它。我已将其添加到我的答案中。谢谢!【参考方案3】:

只需在您的新环境中运行conda install ipykernel,然后您将获得具有此环境的内核。即使您在每个环境中安装了不同的版本并且它不会再次安装 jupyter notebook,这仍然有效。您可以从任何可以看到新添加的内核的环境启动 notebook。

【讨论】:

这是截至 2018 年 1 月的最佳答案。如果您只是在 conda 环境中 conda install ipykernel,Jupyter 应该会在启动时自动发现您的内核。最坏的情况是,您可以使用python -m ipykernel install --user --name mykernel 手动生成内核,但如果它已经被自动发现,您就不想这样做了,否则它会在内核列表中出现两次。 这也将安装 Jupiter 及其所有依赖项。它有效,但不知何故不是最佳的【参考方案4】:

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

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

使用 conda 将 jupyter 和 ipython 安装到 myenv

conda install -n myenv ipython jupyter

之后,在任何列出 myenv 的环境之外运行 jupter notebook 作为内核以及我以前的环境。

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

激活环境后运行笔记本:

source activate myenv
jupyter notebook

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

python 2
python 3
R

【讨论】:

【参考方案5】:

我认为其他答案不再有效,因为 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。

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

【讨论】:

是否有可能以某种方式标记截至今天为止的最新解决方案? 只有这对我有用! conda install nb_conda - 没有帮助。谢谢! 截至 2018 年 4 月,安装 nb_conda_kernels 为我工作(Python 3.6.4conda 4.3.27jupyter 4.4.0)。 更正我之前的评论:新的环境不会只在第一次出现。再次停用并激活env后,然后打开jupyter,它就会正常显示。 如果这对您不起作用,请尝试运行 conda install ipykernel 这个答案假定您已经在您的环境中安装了它。【参考方案6】:

我们在这个问题上遇到了很多困难,这就是对我们有用的方法。如果您使用conda-forge channel,请务必确保使用来自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】:

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

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

【讨论】:

这对我也有用,但我不需要conda install nb_conda 惊人的蒸馏! 当我在特定环境中运行 jupyter lab 时,我只需要前 3 个命令来显示环境内核作为选项 也为我工作。天哪,这令人沮丧。 你不需要 nb_conda! ;)【参考方案8】:

这太令人沮丧了,我的问题是在新建的 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。我必须使用内核菜单“更改内核”来选择环境python。

【讨论】:

【参考方案9】:
    $ conda install nb_conda_kernels

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

【讨论】:

这不是概括***.com/a/48349338/570918吗? 这看起来是最简单的方法。【参考方案10】:

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

【讨论】:

实际上,更新 jupyter 并使用 conda install nb_conda_kernels 效果更好。 请注意python -m ipykernel install 是注册环境的传统途径,适用于其他(非Conda)环境。 nb_conda_kernels 背后的想法是,您不需要手动执行此操作,只要安装 ipykernel 是的!我把这条评论变成了this standalone answer。【参考方案11】:

摘要 (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 在这里所做的是通过三个不同的路径搜索内核。它从 User,到 Env,再到 System。有关它搜索每个操作系统的路径的更多详细信息,请参阅this document。

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

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

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

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

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

感谢this GitHub issue comment(查看第一个回复),您可以使用以下命令删除用户“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”似乎不是默认为每个人安装的,所以不是每个人都会遇到这个问题。

【讨论】:

python -m ipykernel install --user --name test_env --display-name "Python (test_env)" 就像一个魅力。谢谢【参考方案12】:

按照instructions in the iPython documentation 将不同的 conda 环境添加到内核列表以供在 Jupyter Notebook 中选择。综上所述,安装ipykernel后,必须在终端中逐个激活conda环境,运行命令python -m ipykernel install --user --name myenv --display-name "Python (myenv)",其中myenv就是你要添加的环境(内核)。

【讨论】:

【参考方案13】:

在我的例子中,使用 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,在 Environments 中选择环境,按所选环境上的“播放”按钮,然后选择“使用 Jupyter 打开”笔记本”。

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

【讨论】:

查看the documentation,了解如何使用 Conda 内核。您从具有 Jupyter 的环境中启动 Jupyter;您在希望在 Jupyter 中用作内核的所有环境中安装 ipykernel【参考方案14】:

nb_conda_kernels 包是使用jupyterconda 的最佳方式。通过最少的依赖项和配置,它允许您使用在不同环境中运行的 jupyter notebook 中的其他 conda 环境。引用其documentation:

安装

此软件包旨在仅使用 conda 进行管理。它应该安装在运行 Jupyter Notebook 或 JupyterLab 的环境中。这可能是您的base conda 环境,但不一定是。例如,如果环境 notebook_env 包含 notebook 包,那么您将运行

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 notebook服务器:

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


尽管有很多答案并且@me​​rv 努力改进它们,但仍然很难找到一个好的答案。我制作了这个 CW,所以请投票给顶部或改进它!

【讨论】:

Screenshot by Rich Signell【参考方案15】:

这在 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】:

可能的特定渠道问题

我(再次)遇到了这个问题,结果证明我是从 conda-forge 频道安装的;删除它并从 anaconda 频道重新安装,而不是为我修复它。

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

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

【讨论】:

听起来你可能把一些事情搞混了。 jupyternb_conda_kernels 应该安装在一个环境中 - 这是您始终运行 jupyter notebook 的地方。新的环境只需要ipykernel,但在运行jupyter notebook时不应激活。 我知道,它是在一台新机器上。 好的。我编辑了你的答案,主要是为了改变我的投票,但也是为了澄清你所说的 conda 频道(不是一件事 - defaultsanaconda )。如果我对发生的事情有误,请随时进一步编辑。【参考方案17】:

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

为了能够在 Jupyter notebook 中看到 conda env,您需要:

基础环境中的以下包: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'

您可以在终端中看到的环境:

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

你可以在打开笔记本时选择你的环境:

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

【讨论】:

c.NotebookApp.kernel_spec_manager_class=.. 添加到 Jupyter 配置解决了我的问题 GCP 的 AI 平台。我的猜测是 nb_conda_kernels 软件包已安装,但未配置为与 Jupyter 一起使用。【参考方案18】:

向 Jupyter 添加 conda 环境:

    打开Anaconda Prompt

    执行conda activate <env name>

    执行conda install -c anaconda ipykernel

    执行python -m ipykernel install --user --name=<env name>

    在 conda 4.8.3

    上测试

【讨论】:

【参考方案19】:

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

pip install ipykernel

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

python -m ipykernel install --name = my_env

【讨论】:

安装 ipykernal 后,这工作: python -m ipykernel install --user --name myenv --display-name "Python (myenv)"【参考方案20】:

仅使用环境变量:

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

【讨论】:

【参考方案21】:

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

【讨论】:

【参考方案22】:

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

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

【讨论】:

这对我有用。以前,我以这种方式安装 ipykernelpython -m ipykernel install --user --name=<environment-name>,但该方法似乎不再有效,即使环境显示为内核选项。 这非常有效。在尝试了这篇文章的方法后:***.com/a/43197286/1968932。静止环境不可见。但是,即使在刷新页面后在 jupyter 实验室工作区中工作时,您的技巧似乎最终也能正常工作。

以上是关于Conda 环境未显示在 Jupyter Notebook 中的主要内容,如果未能解决你的问题,请参考以下文章

jupyter多个虚拟环境间切换

在 Jupyter Notebook 中使用 conda 环境

jupyter中添加conda环境

如何在jupyter中添加conda环境

最全指南如何在 Jupyter Notebook 中切换/使用 conda 虚拟环境?

转载---jupyter中添加conda环境---kernel配置