如何在 JupyterHub 中创建新的 Anaconda 环境并将环境绑定到新的 Jupyter-Notebook?

How to create new Anaconda Environments within JupyterHub and bind a Environment to a new Jupyter- Notebook?

我使用 Docker 容器安装了 JupyterHub。

当我登录网络界面时,我看到以下环境选项:

加载一段时间后,我看到启动器选项卡如下:

现在,我想创建一些新的 Anaconda 环境(MyDevEnvPy3.7、MyTestEnvPy3.7、MyDevEnvPy3.8、MyTestEnvPy3.8),并启动一个新的 JupyterNotebook,它正好使用上述这些 Anaconda 环境之一。

我的想法是,我可以使用不同的包和 python 版本(即 3.7 或 3.8)配置每个 Anaconda 环境。

特别是在这种情况下,如果我需要升级一些 Python 包,即在我的 MyDevEnvPy3.7 中,我想先在 MyTestEnvPy3.7 中升级 Python 包,看看如果我的代码仍然是 运行。然后我想使用 MyDevEnvPy3.7 这样做。

我该怎么做?

甚至有可能吗? 到目前为止,我只使用过 Anaconda Navigator。 Anaconda Navigator 是我的起点,我首先在“环境”选项卡中配置我的环境,然后切换到“主页”选项卡,选择要使用的 Anaconda 环境并启动 Jupyter Notebook(使用此环境)。但是现在在 JupyterHub 中,我不知道什么是使用特定 Anaconda 环境启动 Jupyter Notebook 的最佳实践...

这几乎是 Jupyter/IPython 提供的标准功能,技术上称为 'adding new kernel'。请按照以下步骤(在 shell 终端中):

  1. 假设您有一个名为 MyTestEnvPy3.8 的 conda 环境。激活这个环境。

  2. 在要添加到Jupyter的conda环境中安装ipykernel

    $ conda install ipykernel
    
  3. 安装内核

    $ python -m ipykernel install --user --name test --display-name "MyTestEnvPy3.8"
    

    您可以随时更改 name(此内核在您的 jupyter 目录中的显示方式)和 display-name(它在 JupyterLab 的 'Select Kernel' window 中的显示方式)。

  4. 检查内核是否安装成功:

    $ jupyter kernelspec list
    

现在您可以在 JupyterLab 的 'Select Kernel' window 中找到您安装的内核。你调用的接口'launcher'是JupyterLab的开始window。 JupyterHub 托管多个 Jupyter 服务器,一旦您从中启动 JupyterLab,您就进入了 JupyterLab 的世界!

没有'bind a kernel with the notebook',notebook只是一种文件格式,在JupyterNotebook或JupyterLab界面打开时,可以随时切换内核。

我终于成功创建了不同的 Anaconda 环境:

  1. 在启动器选项卡中打开“终端”

  2. 粘贴以下命令:

    # Creates a new Anaconda Environment called "MyDevEnvPy3.7" using Python Version 3.7 
    # in silent mode (parameter "-y")
    conda create -n MyDevEnvPy3.7 python=3.7 -y
    
    # Activates the new created Anaconda Environment "MyDevEnvPy3.7"
    conda activate MyDevEnvPy3.7
    
    # Installs "ipykernel" in active Anaconda Environment "MyDevEnvPy3.7" in silent mode
    conda install ipykernel -y
    
    # Installs new Kernel called "MyDevEnvPy3.7" in Anaconda Environment "MyDevEnvPy3.7"
    python -m ipykernel install --user --name MyDevEnvPy3.7 --display-name="MyDevEnvPy3.7"
    
    # Deactivates the new created Anaconda Environment "MyDevEnvPy3.7"
    conda deactivate
    
    
    
    # Creates a new Anaconda Environment called "MyTestEnvPy3.7" using Python Version 3.7
    # in silent mode (parameter "-y")
    conda create -n MyTestEnvPy3.7 python=3.7 -y
    
    # Activates the new created Anaconda Environment "MyTestEnvPy3.7"
    conda activate MyTestEnvPy3.7
    
    # Installs "ipykernel" in active Anaconda Environment "MyTestEnvPy3.7" in silent mode
    conda install ipykernel -y
    
    # Installs new Kernel called "MyTestEnvPy3.7" in Anaconda Environment "MyTestEnvPy3.7"
    python -m ipykernel install --user --name MyTestEnvPy3.7 --display-name="MyTestEnvPy3.7"
    
    # Installs "numpy" in active Anaconda Environment "MyTestEnvPy3.7" in silent mode
    conda install numpy -y
    
    # Deactivates the new created Anaconda Environment "MyTestEnvPy3.7"
    conda deactivate
    
    
    
    # Creates a new Anaconda Environment called "MyDevEnvPy3.8" using Python Version 3.8
    # in silent mode (parameter "-y")
    conda create -n MyDevEnvPy3.8 python=3.8 -y
    
    # Activates the new created Anaconda Environment "MyDevEnvPy3.8"
    conda activate MyDevEnvPy3.8
    
    # Installs "ipykernel" in active Anaconda Environment "MyDevEnvPy3.8" in silent mode
    conda install ipykernel -y
    
    # Installs new Kernel called "MyDevEnvPy3.8" in Anaconda Environment "MyDevEnvPy3.8"
    python -m ipykernel install --user --name MyDevEnvPy3.8 --display-name="MyDevEnvPy3.8"
    
    # Deactivates the new created Anaconda Environment "MyDevEnvPy3.8"
    conda deactivate
    
    
    
    # Creates a new Anaconda Environment called "MyTestEnvPy3.8" using Python Version 3.8
    # in silent mode (parameter "-y")
    conda create -n MyTestEnvPy3.8 python=3.8 -y
    
    # Activates the new created Anaconda Environment "MyTestEnvPy3.8"
    conda activate MyTestEnvPy3.8
    
    # Installs "ipykernel" in active Anaconda Environment "MyTestEnvPy3.8" in silent mode
    conda install ipykernel -y
    
    # Installs new Kernel called "MyTestEnvPy3.8" in Anaconda Environment "MyTestEnvPy3.8"
    python -m ipykernel install --user --name MyTestEnvPy3.8 --display-name="MyTestEnvPy3.8"
    
    # Installs "numpy" in active Anaconda Environment "MyTestEnvPy3.8" in silent mode
    conda install numpy -y
    
    # Deactivates the new created Anaconda Environment "MyTestEnvPy3.8"
    conda deactivate
    
  3. Select“文件”-->“新启动器”

  4. 现在,您应该会看到 4 个新的 Anaconda 环境:

  5. 通过在笔记本部分选择所需的 Anaconda 环境,将启动一个新的 Jupyter Notebook,并绑定到所选的 Anaconda 环境。

    让我们检查一下:

    右上角可以看到,当前选择的Anaconda Environment为MyDevEnvPy3.7。我们期望 Python 版本 3.7,并且无法导入 numpy,因为它之前未安装在此 Anaconda 环境中。

    右上角可以看到,当前选择的Anaconda Environment为MyTestEnvPy3.7。我们期待 Python 版本 3.7,并且可以导入 numpy,因为它之前安装在这个 Anaconda 环境中。

    右上角可以看到,当前选择的Anaconda Environment为MyDevEnvPy3.8。我们期望 Python 版本 3.8,并且无法导入 numpy,因为它之前未安装在此 Anaconda 环境中。

    右上角可以看到,当前选择的Anaconda Environment为MyTestEnvPy3.8。我们期待 Python 版本 3.8,并且可以导入 numpy,因为它之前安装在这个 Anaconda 环境中。