Conda环境没有在Jupyter笔记本中显示出来

526 人关注

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

问题是,Jupyter Notebook不能识别我刚刚创建的新环境。无论我从GUI导航器还是从命令行启动Jupyter笔记本 within tensorflow 的环境下,菜单中只有一个叫做 Python [Root] 的内核,而Tensorflow不能被导入。当然,我多次点击该选项,保存文件,重新打开,但这些都没有帮助。

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

我看了这个问题。 将Conda环境与Jupyter笔记本连接起来 但在我的电脑上并没有 ~/Library/Jupyter/kernels 这样的目录!这个Jupyter目录只有一个叫做 runtime 的子目录。

我真的很迷惑。Conda环境应该自动成为内核吗? https://ipython.readthedocs.io/en/stable/install/kernel_install.html 来手动设置内核,但被告知没有找到 ipykernel )。

5 个评论
Dror
替换代码0】似乎在环境中安装了 jupyter ...。我错过了什么吗?
估计ipykernel把jupyter作为一个依赖项?
似乎不再起作用了......见下面Andreas的回答
@ThomasK 只有在使用 nb_conda 或者按照问题中的建议手动设置内核的情况下,这个方法才有效。否则,它实际上会把事情搞得很糟。可执行文件 jupyter 将指向环境中的一个可执行文件,但系统的 jupyter-notebook 将被启动(如果安装了),因此不会使用环境中的默认内核。
I've written a comprehensive debugging guide in this Q&A: stackoverflow.com/questions/58068818/...
anaconda
jupyter
jupyter-notebook
conda
user31039
user31039
发布于 2016-09-21
23 个回答
Andreas Mueller
Andreas Mueller
发布于 2019-05-27
已采纳
0 人赞同

我认为其他的答案已经不起作用了,因为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

是否有可能以某种方式标记是在截至今天的最新解决方案?
Deil
只有这个对我有用!conda install nb_conda - 没有帮助。谢谢!
Installing nb_conda_kernels worked for me as of April 2018 ( Python 3.6.4 , conda 4.3.27 , jupyter 4.4.0 ).
R71
更正我之前的评论:新的环境并不是只在第一次出现。在你停用并再次激活该环境后,再打开jupyter,它就会正常显示了。
如果这对你不起作用,请尝试运行 conda install ipykernel ,本答案假定你已经在你的环境中安装了这个程序。
Steven C. Howell
Steven C. Howell
发布于 2019-05-27
0 人赞同

如果你的环境没有显示出来,确保你已经安装了

  • nb_conda_kernels in the environment with Jupyter
  • ipykernel and ipywidgets in the Python environment you want to access (note that ipywidgets is to enable some Juptyer functionality, not environment visibility, see related docs ).
  • Anaconda的文件 指出,

    替换代码0】应该被安装在你运行Jupyter Notebook或JupyterLab的环境中。 的环境中安装,这可能是你运行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可以访问来自大量的其他语言 including R, 朱莉娅, Scala/Spark, 脚本, bash。八度空间,甚至是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环境。我在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内核选项。 替换代码0】的目的只是"[提供]Conda环境和Jupyter内的软件包访问扩展",而不是让你可以从你选择的python安装中运行Jupyter。
    merv
    @StevenC.Howell 谢谢你解决我的问题。我认为你仍然需要提到, ipykernel 需要安装在你想用作内核的每个环境中。
    嗯,我不知道为什么没有它就能工作。 你是对的,他们清楚地说明应该安装它。 我已经在我的答案中加入了这一点。 谢谢!
    Octavius
    Octavius
    发布于 2019-05-27
    0 人赞同

    恼人的是,在你的 tensorflow 环境中,你可以运行 jupyter notebook 在该环境中不安装 jupyter . Just run

    (tensorflow) $ conda install jupyter
    

    tensorflow环境现在应该在你的任何conda环境中启动的Jupyter笔记本中显示为类似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浏览器中切换kernels/conda环境。
    可以报告这个方法在2018年9月使用Anaconda 5.2 Python 3.6时有效。
    merv
    这是个糟糕的答案 因为它鼓励用户在每个环境中安装Jupyter,这完全没有必要。这样做的原因是, ipykernel (这是唯一实际需要的东西),是 jupyter 的一个依赖项。
    coolscitist
    coolscitist
    发布于 2019-05-27
    0 人赞同

    我不得不运行前三个答案中提到的所有命令,以使其发挥作用。

    conda install jupyter
    conda install nb_conda
    conda install ipykernel
    python -m ipykernel install --user --name mykernel
        
    这也是对我有用的,但我不需要 conda install nb_conda
    惊人的蒸馏技术!
    我只需要前3条命令在我运行 jupyter lab 时将环境内核作为一个选项显示在那个特定的环境里。
    对我来说也是如此。我的天哪,这真是令人沮丧的问题。
    你不需要nb_conda!;)
    rakesh
    rakesh
    发布于 2019-05-27
    0 人赞同

    只要在你的新环境中运行 conda install ipykernel ,你就会得到一个带有这个环境的内核。即使你在每个环境中安装了不同的版本,这也是有效的,它不会再次安装jupyter笔记本。你可以从任何环境中启动你的笔记本,你将能够看到新添加的内核。

    这是截至2018年1月的最佳答案。 如果你在conda环境中简单地 conda install ipykernel ,Jupyter应该在启动时自动发现你的内核。 最坏的情况是,你可以使用 python -m ipykernel install --user --name mykernel 来手动生成内核,但如果它已经被自动发现,你不会想这样做,否则它将在内核列表中显示两次。
    这也会安装Jupiter和它的所有依赖项。它可以工作,但不知何故,它不是最佳的。
    Ted Petrou
    Ted Petrou
    发布于 2019-05-27
    0 人赞同

    Summary (tldr)

    如果你想让'python3'内核总是从启动它的环境中运行Python安装,请删除用户'python3'内核,它优先于当前环境中的任何内容。

    jupyter kernelspec remove python3
    

    Full Solution

    我将针对以下情况发布一个替代的、更简单的解决方案。

  • You have created a conda environment
  • This environment has jupyter installed (which also installs ipykernel)
  • When you run the command jupyter notebook and create a new notebook by clicking 'python3' in the 'New' dropdown menu, that notebook executes python from the base environment and not from the current environment.
  • You would like it so that launching a new notebook with 'python3' within any environment executes the Python version from that environment and NOT the base
  • 我将使用'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, to Env, to System. See 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 "内核优先于任何环境 "python3 "内核。通过移除它,活动的环境 "python3 "内核被暴露出来,并且每次都能被选中。这消除了手动创建内核的需要。在软件开发方面,这也更有意义,因为人们希望将自己隔离在一个单一的环境中。运行一个与主机环境不同的内核似乎并不自然。

    另外,这个用户 "python3 "似乎并不是为每个人默认安装的,所以不是每个人都会遇到这个问题。

    python -m ipykernel install --user --name test_env --display-name "Python (test_env)" 工作起来非常顺利。谢谢你
    Abdulrahman Bres
    Abdulrahman Bres
    发布于 2019-05-27
    0 人赞同

    要在Jupyter中添加一个conda环境。

    In 蟒蛇的提示 :

  • run conda activate <env name>

  • run conda install -c anaconda ipykernel

  • run python -m ipykernel install --user --name=<env name>

    ** 在conda上测试 4.8.3 4.11.0

  • ohailolcat
    ohailolcat
    发布于 2019-05-27
    0 人赞同
        $ conda install nb_conda_kernels
    

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

    merv
    这不就是复述了 stackoverflow.com/a/48349338/570918 ?
    这看起来是最简单的方法。
    bad programmer
    bad programmer
    发布于 2019-05-27
    0 人赞同

    这对我来说是在windows 10和最新的解决方案中工作。

    1) 进入conda环境 ( 激活你的环境名称 )

    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 "周围的引号)

    nb_conda_kernels 包是使用 jupyter conda 的最佳方式。通过最小的依赖和配置,它允许你从运行在不同环境的jupyter笔记本中使用其他conda环境。引述其 文件 :

    这个包被设计成只用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
    

    尽管有大量的答案和@merv的努力改进,但仍然很难找到一个好的答案。我做了这个CW,所以请把它投到最上面,或者改进它!

    Rich Signell
    Rich Signell
    发布于 2019-05-27
    0 人赞同

    我们在这个问题上挣扎了很久,以下是对我们有用的方法。 如果你使用 conda-forge频道 ,确保你使用来自 conda-forge 的更新包是很重要的,即使是在你的 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的屏幕截图。

    0 人赞同

    这是个老话题,但在我感兴趣的环境中,在Anaconda提示下运行这个,对我来说是有效的。

    ipython kernel install --name "myenvname" --user
        
    这对我来说是个好办法。在此之前,我在安装 ipykernel 这种方式。替换代码0】,但这种方法似乎不再起作用,尽管环境作为一个内核选项出现。
    Dan
    这样做效果很好。在尝试了这个帖子上的方法后。 stackoverflow.com/a/43197286/1968932 .但环境仍然不可见。然而,你的诀窍似乎使它最终工作,即使在刷新页面后在jupyter实验室工作区工作。
    Shri Samson
    Shri Samson
    发布于 2019-05-27
    0 人赞同

    我遇到了同样的问题,我的新conda环境, myenv ,不能被选为内核或新笔记本。而从环境中运行 jupter notebook 也得到了同样的结果。

    我的解决方案,以及我对Jupyter笔记本如何识别conda-envs和kernels的了解。

    用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
        
    George J Wright
    George J Wright
    发布于 2019-05-27
    0 人赞同

    我的问题是,在一个新构建的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)"
    

    我能够让一切顺利进行。(我实际上没有使用-用户变量)。

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

    Dr. Fabien Tarrade
    Dr. Fabien Tarrade
    发布于 2019-05-27
    0 人赞同

    我也有类似的问题,我找到了一个解决方案,在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 来创建它。
    添加或确保你有以下内容。【替换代码6

  • 你可以在你的终端中看到的设想。

    在Jupyter Lab上,你可以看到和上面一样的笔记本和控制台的设想。

    你可以在打开笔记本时选择你的设想。

    安全的方法是创建一个特定的环境,你将从这个环境中运行你的 环境的例子 jupyter lab 命令。激活你的环境。然后添加jupyter实验室扩展 jupyter实验室扩展实例 .然后你可以运行 jupyter lab

    在Jupyter配置中添加 c.NotebookApp.kernel_spec_manager_class=.. ,解决了我的问题GCP的AI平台。我的猜测是 nb_conda_kernels 包已经安装了,但它没有被配置为与Jupyter一起工作。
    jan-glx
    jan-glx
    发布于 2019-05-27
    0 人赞同

    While @coolscitist的回答 对我来说是可行的,还有一种方法不会让你的内核环境被完整的jupyter包和程序弄得一团糟。 它描述在 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 效果更好。
    merv
    请注意, python -m ipykernel install 是注册环境的传统途径,并且适用于其他(非Conda)环境。替换代码1】背后的想法是,只要你安装了 ipykernel ,你就不需要手动做这个。
    Yes! I turned this comment into 这个独立的答案 .
    Yiğit Can Taşoğlu
    Yiğit Can Taşoğlu
    发布于 2019-05-27
    0 人赞同

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

    pip install ipykernel
    

    接下来,你可以通过键入来添加你的虚拟环境到Jupyter。

    python -m ipykernel install --name = my_env
        
    SanMelkote
    在安装了ipykernal之后,这个方法起了作用: python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
    Vivek Subramanian
    Vivek Subramanian
    发布于 2019-05-27
    0 人赞同

    Follow the iPython文档中的指示 用于将不同的conda环境添加到Jupyter Notebook中可选择的内核列表中。总之,在安装完 ipykernel 后,你必须在终端中逐一激活每个conda环境,并运行 python -m ipykernel install --user --name myenv --display-name "Python (myenv)" 命令,其中 myenv 是你要添加的环境(内核)。

    xyzzyqed
    xyzzyqed
    发布于 2019-05-27
    0 人赞同

    Possible Channel-Specific Issue

    我遇到了这个问题(再次),结果发现我从 康达-福格尔 渠道;将其拆除并重新安装,从 蟒蛇 频道反而为我解决了这个问题。

    更新 :我在新的环境中又遇到了同样的问题,这次我安装了 nb_conda_kernels ,从 蟒蛇 频道,但我的 jupyter_client 是来自于 康达-福格尔 频道。卸载 nb_conda_kernels 并重新安装,将其更新为更优先的频道。

    所以要确保你从正确的渠道安装 :)

    merv
    听起来你可能把一些事情搞混了。替换代码0】和 nb_conda_kernels 应该安装在一个环境中--你总是从这里运行 jupyter notebook 。新的环境只需要 ipykernel ,但在运行 jupyter notebook 时不应该被激活。
    我知道,这是在一台新机器上。
    merv
    好吧,我编辑了你的答案,主要是为了改变我的投票,但也是为了澄清你所说的是什么。 锥形瓶 频道(不是一个东西--要么 违约 or ana锥形瓶 ).如果我错报了情况,请随时进一步编辑。
    zhushihao
    zhushihao
    发布于 2019-05-27
    0 人赞同

    我在使用vscode服务器时遇到了这个问题。 在名为 "base "的conda环境中,我安装了1.2.0版本的opennmt-py,但我想在conda环境 "opennmt2 "中运行jupyter笔记本,其中包含使用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
        
    william_grisaitis
    william_grisaitis
    发布于 2019-05-27
    0 人赞同

    只使用环境变量。

    python -m ipykernel install --user --name $(basename $VIRTUAL_ENV)
        
    GhostSummers
    GhostSummers
    发布于 2019-05-27
    0 人赞同

    我只是想对前面的回答进行补充:如果安装 nb_conda_kernels ipywidgets ipekernel 没有效果,请确保你的Jupyter是最新版本。我的envs在工作了一段时间后突然不显示了,在我通过anaconda导航器简单地更新了jupyter后,它恢复了工作。

    这并没有提供问题的答案。一旦你有足够的 声誉 你将能够 评论任何帖子 而不是。 提供不需要提问者澄清的答案 . - From Review
    albertopolis
    albertopolis
    发布于 2019-05-27
    0 人赞同

    在我的例子中,使用Windows 10和conda 4.6.11,通过运行命令

    conda install nb_conda
    conda install -c conda-forge nb_conda_kernels
    

    在我用conda jupyter notebook从同一命令行打开Jupyter后,在环境激活的情况下,从终端的conda jupyter notebook并没有完成工作。