如何在 Jupyter Notebook 中选择你的 conda 环境
Posted
技术标签:
【中文标题】如何在 Jupyter Notebook 中选择你的 conda 环境【英文标题】:How to choose your conda environment in Jupyter Notebook 【发布时间】:2019-03-25 14:35:23 【问题描述】:我使用 Python 3.7(根环境)安装了 Anaconda 5.3。 之后我使用 Python 3.6 创建了一个新环境(py36)
我使用activate py36
激活了新环境conda env list
表明该环境处于活动状态。
但是当我启动 Jupyter Notebook(从 Anaconda 提示符 jupyter notebook
)时,它似乎使用的是根环境,而不是激活的环境。
如何在新的创建环境 (py36) 中使用 Jupyter Notebook?
【问题讨论】:
我可能已经找到了解决方案。在“主页”菜单的 Anaconda Navigator 中,我在下拉菜单“应用程序打开”中选择了“py36”环境。它可以选择在所选环境中从那里安装 Jupyter Notebook,然后再启动它。在激活新环境后也可以从命令行启动它。我希望有更有效的方法,而不是为每个(新)环境再次安装 Jupyter Notebook。 阅读docs.continuum.io/anaconda/user-guide/tasks/… 的文档,尤其是docs.continuum.io/anaconda/user-guide/tasks/… 【参考方案1】:我设法在类似问题中找到了解决方案。问题是 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
软件包,请使用 pip、anaconda、sudo apt install
或其他方式安装它。
此行将定义一个自定义内核,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:
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 二进制文件的路径可能会改变。但是,过程是相同的。
【讨论】:
【参考方案2】:正如@Ista 提到的,该文档提供了一个使用笔记本扩展的简单解决方案。
conda install nb_conda
安装后,您可以在 Jupyter Notebook 中从 Jupyter Notebook 的“内核”菜单中选择“更改内核”。
【讨论】:
以上是关于如何在 Jupyter Notebook 中选择你的 conda 环境的主要内容,如果未能解决你的问题,请参考以下文章