如何在Jupyter Notebook中选择您的conda环境

时间:2018-10-21 09:16:30

标签: python anaconda jupyter-notebook jupyter conda

我用Python 3.7(根环境)安装了Anaconda 5.3。
之后,我使用Python 3.6创建了一个新环境(py36)

我使用activate py36激活了新环境
conda env list显示环境处于活动状态。

但是,当我启动Jupyter Notebook(从带有jupyter notebook的Anaconda提示符下)时,似乎使用的是root环境,而不是激活的环境。

如何在新的创建环境(py36)中使用Jupyter Notebook?

2 个答案:

答案 0 :(得分:5)

@Ista所述,该文档提供了一个使用笔记本扩展程序的简单解决方案。

conda install nb_conda

安装后,您可以在Jupyter Notebook中从Jupyter Notebook的“内核”菜单中选择“更改内核”。

答案 1 :(得分:0)

我设法在类似的问题中找到了解决方案。问题是IPython不是virtualenv-aware,所以一种解决方法(我觉得最舒服的一种方法)是指定自定义IPython内核,以避免在您的每个virtualenv(或anaconda环境)中安装一个Jupyter Notebook。情况)。

Jupyter依赖于一些“内核”(对在哪里可以找到python二进制文件的定义),这些内核存储在您的操作系统中。这些文件是这样的:

{
 "display_name": "NameOfTheKernel", 
 "language": "python", 
 "argv": [
  "/usr/bin/python", 
  "-m", 
  "ipykernel_launcher", 
  "-f", 
  "{connection_file}"
 ]

/usr/bin/python是要执行的python二进制文件的路径。但是,由于这些内核是由Jupyter在您的计算机中定义的,因此在您安装其他一些环境时,它们不会更新(anaconda或virtualenv就是这种情况)。我发现最简单的方法是为您使用的每个环境定义一个自定义内核。另外,这样做是因为每次直接使用时都需要激活该环境。

这个想法是定义一个自定义内核,以便Jupyter可以“看到”您使用anaconda创建的环境。为此,请在bash中执行以下行:

ipython kernel install --user --name=NameOfTheKernel

“ NameOfTheKernel”实际上并不重要。如果您没有ipython软件包,请通过sudo apt install或其他方式使用pip,anaconda进行安装。

此行要做的是定义一个将由jupyter检测到的自定义内核。出于说明目的,在Ubuntu中,它将以以下数据结构存储在文件夹/home/USERNAME/.local/share/jupyter中:

/home/USERNAME/.local/share/jupyter/kernels/
└── nameofthekernel
    ├── kernel.json
    ├── logo-32x32.png
    └── logo-64x64.png

一旦安装了内核,就必须:

1)知道anaconda在哪里安装了环境。一种简单的方法是在anaconda中激活您的环境,然后在终端中编写“哪个python”。这将显示二进制文件的完整路径。

2)在刚创建的jupyter内核中写入该路径。例如。使用羽毛:

pluma /home/USERNAME/.local/share/jupyter/kernels/nameofthekernel/kernel.json

然后,使用/usr/bin/python所在的anaconda替换安装的python二进制文件的路径。

此后,如果Jupyter正在运行,请重新启动它。这样,下次打开Jupyter时,您可以更改内核(在笔记本电脑中,上部的选项卡之一),并且您将使用您的环境以及在该环境旁边安装的所有软件。

[TL; DR] 我是用pip完成的,但是anaconda的步骤大致相同。步骤是:

#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/bin/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json

或者,如果您正在使用环境:

#CREATE THE IPYTHON KERNELS
ipython kernel install --user --name=NameOfKernel
#IF PYTHON2 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python27|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json
#IF PYTHON3 - MODIFY THE KERNELS TO USE THE ANACONDA BINARIES
sed -i -e "s|/usr/bin/python3|/home/${USER}/anaconda/envs/nameofenvironment/python36|g" /home/$USER/.local/share/jupyter/kernels/nameofkernel/kernel.json

注意:我没有安装CONDA来测试解决方案,因此通往实际PYTHON双星的路径可能会发生变化。程序是一样的。