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 环境中
ipykernel
和 ipywidgets
在您要访问的 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.4
、conda 4.3.27
、jupyter 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
包是使用jupyter
和conda
的最佳方式。通过最少的依赖项和配置,它允许您使用在不同环境中运行的 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
尽管有很多答案并且@merv 努力改进它们,但仍然很难找到一个好的答案。我制作了这个 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
并重新安装将其更新到更高优先级的频道。
所以请确保您已从正确的渠道安装 :)
【讨论】:
听起来你可能把一些事情搞混了。jupyter
和 nb_conda_kernels
应该安装在一个环境中 - 这是您始终运行 jupyter notebook
的地方。新的环境只需要ipykernel
,但在运行jupyter notebook
时不应激活。
我知道,它是在一台新机器上。
好的。我编辑了你的答案,主要是为了改变我的投票,但也是为了澄清你所说的 conda 频道(不是一件事 - defaults 或 anaconda )。如果我对发生的事情有误,请随时进一步编辑。【参考方案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
【讨论】:
这对我有用。以前,我以这种方式安装 ipykernel:python -m ipykernel install --user --name=<environment-name>
,但该方法似乎不再有效,即使环境显示为内核选项。
这非常有效。在尝试了这篇文章的方法后:***.com/a/43197286/1968932。静止环境不可见。但是,即使在刷新页面后在 jupyter 实验室工作区中工作时,您的技巧似乎最终也能正常工作。以上是关于Conda 环境未显示在 Jupyter Notebook 中的主要内容,如果未能解决你的问题,请参考以下文章
在 Jupyter Notebook 中使用 conda 环境