【问题标题】:Link Conda environment with Jupyter Notebook将 Conda 环境与 Jupyter Notebook 链接
【发布时间】:2016-09-22 20:02:39
【问题描述】:

我正在尝试为使用 python 做一些科学工作创造一个良好的环境。为此,我安装了 Jupyter 和 miniconda。

然后我希望能够拥有不同的环境并将它们与 Jupyter 笔记本一起使用。所以我用 conda 创建了两个自定义环境:py27 和 py35。

> conda env list
# conda environments:
#
py27                     /Users/***/miniconda3/envs/py27
py35                     /Users/***/miniconda3/envs/py35
root                  *  /Users/***/miniconda3

然后在我的笔记本上我有两个内核python 2python 3。 在笔记本中,我使用 python3 内核得到以下信息:

> import sys
> print(sys.executable)
/Users/***/miniconda3/envs/py35/bin/python

这与 python2 内核:

> import sys
> print(sys.executable)
/usr/local/opt/python/bin/python2.7
  • 如何将sys.executable 设置为 python2 的 miniconda env?
  • 如何将 conda env 与笔记本内核绑定?
  • source activate py35 是否有与jupyter notebook 的链接?

我想我真的错过了什么。

谢谢大家。

--- 编辑

我有多个 jupyter bin :

> where jupyter
/usr/local/bin/jupyter
/usr/local/bin/jupyter
/Users/ThomasDehaeze/miniconda3/bin/jupyter

我这里只有一个内核/usr/local/share/jupyter/kernels/python2。 但是在 Jupyter 内部,我有两个内核,python2python3。我在哪里可以找到另一个?


我从/usr/local/share/jupyter/kernels/python2修改了kernel.json

{
 "display_name": "Python 2",
 "language": "python",
 "argv": [
  "/Users/***/miniconda3/envs/py27/bin/python2.7",
  "-m",
  "ipykernel",
  "-f",
  "{connection_file}"
 ]
}

然后:

import sys
print(sys.executable)
/usr/local/opt/python/bin/python2.7

所以一切都没有改变

【问题讨论】:

标签: python ipython jupyter jupyter-notebook miniconda


【解决方案1】:

对于 Anaconda,我建议您使用更简单、更合适的解决方案; 看看nb_conda_kernels package

它允许您“在 Jupyter Notebook 中管理基于 conda 环境的内核”。

从 Anaconda 版本 4.1.0 起应包含,否则只需使用

conda install nb_conda

现在您应该可以从 Notebook 界面直接管理所有内容了。

【讨论】:

  • 这个包很好用!您只需在激活环境时安装它。该环境立即显示在笔记本的新菜单选择中。因此,您必须对要添加到列表中的每个环境执行此操作。
  • 安装 nb_conda 的缺点是 conda 环境混乱。有解决办法吗?
  • @Quickbeam2k1 您只需将其安装到运行 Jupyter 笔记本的环境中。这允许您将 Jupyter 安装到根环境中并在各种其他环境中运行笔记本,而无需在每个环境中都安装 Jupyter。
  • 他们改变了什么吗?上次我尝试这个时,由于 nb_conda 内核与 Jupyter 的依赖关系,这是不可能的。
  • 正如我今天(2018 年 2 月 1 日)所尝试的,在 root env 中安装 nb_conda 后,所有 envs 都会出现在 Jupyter notebook 文件浏览器的内核列表中,无需在其他 env 中安装 nb_conda_kernels。
【解决方案2】:

假设你的 conda-env 被命名为cenv,它很简单:

    $ conda activate cenv
    (cenv)$ conda install ipykernel
    (cenv)$ ipython kernel install --user --name=<any_name_for_kernel>
    (cenv($ conda deactivate

如果您重新启动 jupyter notebook/lab,您将能够看到可用的新内核。

PS:如果您使用的是 virtualenv 等,上述步骤也适用。

【讨论】:

  • 这就是我一直使用它的方式。但是,当我在 conda 环境中使用 openjdk 时,我无法让它工作。 JAVA_HOME 通常在 env 被激活时设置。当我将它安装为 ipython 内核时,这不会发生。对这种情况有什么想法吗?
【解决方案3】:

不确定还有什么帮助,但对我来说至关重要的是在根 conda 环境中安装 nb_conda_kernels。尝试在特定的 conda 环境中安装它并没有让 Jupyter Notebook 能够使用默认环境以外的其他 conda 环境。

conda install -n root nb_conda_kernels

jupyter notebook

【讨论】:

  • 是的。我也必须这样做,虽然这有点违反直觉,因为 nb_conda 只应该作为内核进入你想要的环境中。
【解决方案4】:

我找到了解决方案。内核的设置位于此处~/Library/Jupyter/kernels/

然后我修改了kernel.json文件,并将正确的路径设置为python。

现在它正在工作。

【讨论】:

    【解决方案5】:

    这对我有用:

    source activate {environment_name}
    python -m ipykernel install --user --name={environment_name};
    

    如果没有安装 ipykernel,请使用以下命令:

    conda install -c anaconda ipykernel
    

    【讨论】:

      【解决方案6】:

      对我有用的是:创建虚拟环境,安装 ipykernel,在 jupyter 内核中注册虚拟环境并加载 jupyter notebook:

      $ conda create -n testEnv python=3.6
      $ conda activate testEnv
      (testEnv)$ conda install ipykernel
      (testEnv)$ ipython kernel install --user --name=testEnv
      (testEnv)$ jupyter notebook
      

      在此之后,在 jupyter notebook 中,您应该能够在其他内核列表中找到创建的环境

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-27
        • 2021-01-24
        • 2020-04-03
        • 2017-01-28
        • 2019-06-06
        • 1970-01-01
        相关资源
        最近更新 更多