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

How to choose your conda environment in Jupyter Notebook

我用 Python 3.7(root 环境)安装了 Anaconda 5.3。
之后我使用 Python 3.6

创建了一个新环境 (py36)

我用 activate py36
激活了新环境 conda env list 表明环境是活跃的。

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

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

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

Jupyter 依赖于一些 "kernels"(在哪里可以找到 python 二进制文件的定义)存储在您的 OS 中的某个地方。这些文件是这样的:

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

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

这个想法是定义一个自定义内核,以便 Jupyter 可以 "see" 您使用 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 中激活您的环境,然后在终端中写入 "which python"。这将显示二进制文件的完整路径。

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

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

然后,将 python 二进制文件的路径替换为 /usr/bin/python 所在的 anaconda。

在此之后,如果 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 二进制文件的路径可能会改变。但是,过程是相同的。

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

conda install nb_conda

安装后,您可以在 Jupyter Notebook 的 'Kernel' 菜单中选择 'Change kernel'。