Conda环境没有出现在Jupyter Notebook中

use*_*039 305 anaconda conda jupyter jupyter-notebook

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

问题是Jupyter Notebook无法识别我刚刚创建的新环境.无论我从GUI导航或命令行启动Jupyter笔记本电脑tensorflowENV中,只有一个名为菜单内核Python [Root],并Tensorflow无法导入.当然,我多次点击该选项,保存文件,重新打开,但这些没有帮助.

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

我看了这个问题: 用Jupyter Notebook链接Conda环境 但是~/Library/Jupyter/kernels我的电脑上没有这样的目录!这个Jupyter目录只有一个名为的子目录runtime.

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

And*_*ler 466

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

source activate myenv
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
Run Code Online (Sandbox Code Playgroud)

如此处所述:http://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernels-for-different-environments 也看到此问题.

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

  • 有可能以某种方式标志是今天最新的解决方案吗? (24认同)
  • 如果这对您不起作用,请尝试运行`conda install ipykernel`,这个答案假定您已经在您的环境中安装了该文件. (17认同)
  • 截至 2018 年 4 月,安装 `nb_conda_kernels` 对我有用(`Python 3.6.4`、`conda 4.3.27`、`jupyter 4.4.0`)。 (6认同)
  • 只有这对我有用!conda install nb_conda - 没有帮助。谢谢! (3认同)
  • 更正我之前的评论:新的env不会仅在第一次出现.停用并再次激活env,然后打开jupyter后,它会正确显示. (3认同)
  • /sf/answers/3023810051/ 是一个更新且完整的答案。 (2认同)

Ste*_*ell 108

@ HarshaManjunath的评论提到当使用Anaconda3(或Miniconda3)时,你需要安装nb_conda_kernels到conda环境中(除此之外nb_conda_kernels):

conda install -n notebook_env nb_conda_kernels
Run Code Online (Sandbox Code Playgroud)

请注意,这目前不适用于python 3.6环境.该软件包的信息确实说有一个python 3.6版本,它只是不起作用.

conda install -n python_env ipykernel
Run Code Online (Sandbox Code Playgroud)

要在Jupyter笔记本中使用python 3.6,您可以nb_conda在python 3.6环境中运行.您将无法从Jupyter中查看或切换到其他环境.

conda install -n r_env r-irkernel
Run Code Online (Sandbox Code Playgroud)

请注意,我在这个笔记本中运行Python 3.6.1: 在此输入图像描述

  • @Baktaawar,请参阅我的更新答案,以演示如何在笔记本中使用python 3.6。您可以运行python 3.6环境,只需在活跃的环境下启动jupyter。可以将Conda环境视为独立的python安装。如果将Jupyter安装到系统python中,您同样只会看到一个python内核选项。`nb_conda`的目的仅是为了“ [从Jupyter内部提供Conda环境和程序包访问扩展名]”,而不是为了使您可以从所选的python安装中运行Jupyter。 (2认同)
  • @StevenC.Howell 感谢您解决我的担忧。我认为您仍然需要提到“ipykernel”需要安装在您想要用作内核的每个环境中。 (2认同)

Oct*_*ius 103

令人讨厌的是,在您的tensorflow环境中,您可以在jupyter notebook 不在jupyter该环境中安装的情况下运行.赶紧跑

(tensorflow) $ conda install jupyter
Run Code Online (Sandbox Code Playgroud)

并且tensorflow现在应该可以在Jupyter中看到环境,这些笔记本在您的任何conda环境中都可以像Python [conda env:tensorflow].

  • @rkmalaiya是对的.如果您正在运行Miniconda3或Anaconda3,请在您的一个源conda环境(安装了jupyter笔记本)中执行```conda install nb_conda```.然后,您可以在jupyter笔记本浏览器中切换kernels/conda envs. (7认同)
  • **这是一个糟糕的答案**,因为它鼓励用户在每个环境中安装Jupyter,这完全没有必要。之所以有效,是因为ipipkernel(实际上是唯一需要的东西)是jupyter的依赖项。 (7认同)
  • 我和Thomas K有同样的问题,Octavius分享的解决方案也解决了我的问题.但是,有一个问题,如果你有Python 3版本的Anaconda,那么你将只能看到你当前的活动环境,它应该拥有它自己的Jupyter.但是如果你安装了Python 2版本的Anaconda,它可以处理所有环境. (6认同)
  • 您可以在Python2版本的anaconda中执行"conda install nb_conda"来管理来自Jupyter本身的环境. (6认同)

coo*_*ist 59

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

conda install jupyter
conda install nb_conda
conda install ipykernel
python -m ipykernel install --user --name mykernel
Run Code Online (Sandbox Code Playgroud)

  • 这对我也有用,但我不需要`conda install nb_conda` (8认同)
  • 您不需要nb_conda!;) (4认同)
  • 惊人的蒸馏! (3认同)
  • 也为我工作过.我的上帝这令人沮丧. (3认同)

小智 47

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

  • 这是截至2018年1月的最佳答案.Jupyter应该在启动时自动发现你的内核,如果你只是在你的conda环境中"conda install ipykernel".最糟糕的情况是,您可以使用`python -m ipykernel install --user --name mykernel`来手动生成内核,但是如果它已经被自动发现,您将不想这样做,或者它将在内核列表. (10认同)
  • 这还将安装 Jupiter 及其所有依赖项。它有效,但不知何故它不是最佳的 (2认同)

Abd*_*res 13

向 Jupyter 添加 conda 环境:

  1. 打开Anaconda 提示

  2. 执行 conda activate <env name>

  3. 执行 conda install -c anaconda ipykernel

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

    在 conda 4.8.3上测试


bad*_*mer 12

这在 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”周围的引号)


jan*_*glx 11

nb_conda_kernels包是jupyterconda. 凭借最少的依赖和配置,它允许您从在不同环境中运行的 jupyter notebook 使用其他 conda 环境。引用它的文档

安装

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

对于其他语言,必须安装相应的内核

然后你需要做的就是启动 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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明


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


oha*_*cat 10

    $ conda install nb_conda_kernels
Run Code Online (Sandbox Code Playgroud)

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


Ted*_*rou 10

摘要(tldr)

如果您希望'python3'内核始终在启动它的环境中运行Python安装,请删除用户'python3'内核,该内核优先于当前环境所处的环境:

jupyter kernelspec remove python3
Run Code Online (Sandbox Code Playgroud)

完整解决方案

对于以下情况,我将发布一种替代且更简单的解决方案:

  • 您已经创建了一个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)"
Run Code Online (Sandbox Code Playgroud)

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

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

python3       /Users/Ted/Library/Jupyter/kernels/python3
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

 ls /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels
Run Code Online (Sandbox Code Playgroud)

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

感谢这个GitHub问题注释(请看第一个响应),您可以使用以下命令删除User'python3'环境:

jupyter kernelspec remove python3
Run Code Online (Sandbox Code Playgroud)

现在,当您运行时jupyter kernelspec list,假设test_env仍处于活动状态,您将获得以下内容:

python3       /Users/Ted/anaconda3/envs/test_env/share/jupyter/kernels/python3
Run Code Online (Sandbox Code Playgroud)

请注意,该路径位于test_env目录中。如果创建一个新环境,安装jupyter,将其激活并列出内核,您将在其环境路径中找到另一个“ python3”内核。

用户'python3'内核优先于任何Env'python3'内核。通过删除它,活动环境“ python3”内核被公开,并且每次都可以选择。这样就无需手动创建内核。对于需要将自己隔离到一个环境中的软件开发而言,这也更有意义。运行与主机环境不同的内核似乎并不自然。

似乎默认情况下也未为所有人安装此用户“ python3”,因此并非所有人都遇到此问题。


Ric*_*ell 9

我们在这个问题上遇到了很多困难,这对我们有用.如果您使用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
Run Code Online (Sandbox Code Playgroud)

并且您的自定义环境将作为可用内核显示在Jupyter中,只要ipykernelcustom_env.yml文件中列出安装,就像这个示例:

name: bqplot
channels:
- conda-forge
- defaults
dependencies:
- python>=3.6
- bqplot
- ipykernel
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述


小智 7

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

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

使用conda安装jupyter和ipython myenv:

conda install -n myenv ipython jupyter
Run Code Online (Sandbox Code Playgroud)

之后,jupter notebookmyenv我之前的环境中运行作为内核列出的任何env .

Python [conda env:old]
Python [conda env:myenv]
Run Code Online (Sandbox Code Playgroud)

激活环境后运行笔记本:

source activate myenv
jupyter notebook
Run Code Online (Sandbox Code Playgroud)

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

python 2
python 3
R
Run Code Online (Sandbox Code Playgroud)


a11*_*a11 7

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

ipython kernel install --name "myenvname" --user
Run Code Online (Sandbox Code Playgroud)


Dr.*_*ade 6

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

为了能够在 Jupyter Notebook 中查看 conda env,您需要:

  • 您的基础环境中包含以下包:
    conda install nb_conda

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

  • 检查jupyter_notebook_config.py
    jupyter_notebook_config.py一个检查的配置 ,jupyter --paths
    如果不存在,请通过运行 jupyter notebook --generate-config
    add 创建它,或者确保您具有以下内容:c.NotebookApp.kernel_spec_manager_class='nb_conda_kernels.manager.CondaKernelSpecManager'

您可以在终端中看到的环境: 在此输入图像描述

在 Jupyter Lab 上,您可以看到与上面笔记本和控制台相同的环境: 在此输入图像描述

当打开笔记本时,您可以选择您的环境: 在此输入图像描述

安全的方法是创建一个特定的环境,您将在其中运行envjupyter lab命令的示例。激活您的环境。然后添加 jupyter lab 扩展示例 jupyter lab 扩展。然后你就可以运行 jupyter lab


小智 5

这太令人沮丧了,我的问题是在新建的 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)"
Run Code Online (Sandbox Code Playgroud)

我能够让一切顺利。(我实际上并没有使用 —user 变量)。

我还没有想到的一件事是如何将默认 python 设置为“Python (other-env)”。目前,从主屏幕打开的现有 .ipynb 文件将使用系统 python。我必须使用内核菜单“更改内核”来选择环境python。


归档时间:

查看次数:

192278 次

最近记录:

6 年,1 月 前