将Conda环境与Jupyter Notebook联系起来

Tho*_*eze 48 python ipython miniconda jupyter jupyter-notebook

我正在努力为python做一些科学的东西设置一个良好的环境.为此,我安装了Jupyter和miniconda.

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

> conda env list
# conda environments:
#
py27                     /Users/***/miniconda3/envs/py27
py35                     /Users/***/miniconda3/envs/py35
root                  *  /Users/***/miniconda3
Run Code Online (Sandbox Code Playgroud)

然后在我的笔记本上我有两个内核python 2python 3.在笔记本内部,我使用python3内核获得以下内容:

> import sys
> print(sys.executable)
/Users/***/miniconda3/envs/py35/bin/python
Run Code Online (Sandbox Code Playgroud)

这与python2内核:

> import sys
> print(sys.executable)
/usr/local/opt/python/bin/python2.7
Run Code Online (Sandbox Code Playgroud)
  • 如何设置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
Run Code Online (Sandbox Code Playgroud)

我这里只有一个内核/usr/local/share/jupyter/kernels/python2.但在Jupyter里面,我有两个内核,python2而且python3.我在哪里可以找到另一个?


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

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

然后 :

import sys
print(sys.executable)
/usr/local/opt/python/bin/python2.7
Run Code Online (Sandbox Code Playgroud)

所以没有任何改变

5ag*_*ado 84

对于Anaconda,我建议你一个更容易和更合适的解决方案; 只需看一下nb_conda_kernels包.

它允许您"在Jupyter Notebook中管理基于conda环境的内核".

自Anaconda版本4.1.0以来应该包括在内,否则只需使用

conda install nb_conda
Run Code Online (Sandbox Code Playgroud)

现在,您应该能够从Notebook界面直接管理所有目标.

  • 这个包很棒!您只需在激活环境时安装它.该环境立即出现在笔记本的新菜单选择中.因此,您必须对要添加到列表中的每个环境执行此操作. (10认同)
  • 正如我今天(2018年2月1日)所做的那样,在root env中安装nb_conda后,所有env都出现在Jupyter笔记本文件浏览器的内核列表中,无需在其他环境中安装nb_conda_kernels. (4认同)

Nih*_*eth 14

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

    $ conda activate cenv
    (cenv)$ conda install ipykernel
    (cenv)$ ipython kernel install --user --name=<any_name_for_kernel>
    (cenv($ conda deactivate
Run Code Online (Sandbox Code Playgroud)

如果重新启动jupyter笔记本/实验室,您将能够看到可用的新内核。

PS:如果您正在使用virtualenv等,上述步骤将很有效。

  • 这就是我一直使用的方式。当我在 conda 环境中使用 openjdk 时,我无法让它工作。JAVA_HOME 通常在激活环境时设置。当我将其安装为 ipython 内核时,不会发生这种情况。对于这个场景有什么想法吗? (2认同)

Tho*_*eze 5

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

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

现在它正在运作.


ved*_*ano 5

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

conda install -n root nb_conda_kernels

jupyter notebook
Run Code Online (Sandbox Code Playgroud)