【问题标题】:In which conda environment is Jupyter executing?Jupyter 在哪个 conda 环境中执行?
【发布时间】:2016-09-02 07:28:19
【问题描述】:

我有 jupyter/anaconda/python3.5。

  1. 我如何知道我的 jupyter notebook 在哪个 conda 环境中运行?

  2. 如何从新的 conda 环境启动 jupyter?

【问题讨论】:

  • 在你想在 jupyter notebook 中使用的每个环境中安装一个单独的 ipython 内核。这样,您启动哪个 jupyter 实例并不重要。
  • Docs on installing kernels for environments。要查看笔记本在哪个 conda 环境中运行,您可以查看 sys.executable
  • 如果你使用包nb_conda_kernels会更容易。相关问题/答案:Using both Python 2.x and Python 3.x in IPython Notebook
  • 另请参阅this great article。简而言之,它非常清楚地讨论了jupyter 的“内核”python 环境与您启动jupyter notebook [notebook_name].ipynb 的shell 的python 环境之间的区别。
  • 问题 1 最简单的答案是在当前笔记本单元格或命令提示符下键入“!conda info”或“import sys; print(sys.executable)”。对于问题 2,请遵循以下最简单的答案。

标签: ipython anaconda jupyter jupyter-notebook


【解决方案1】:

如 cmets 中所述,切换内核需要对 jupyter notebooks 的 conda 支持。似乎这种支持现在可以通过 conda 本身获得(而不是依赖于 pip)。 http://docs.continuum.io/anaconda/user-guide/tasks/use-jupyter-notebook-extensions/

conda install nb_conda

除了 Notebook Conda Kernels 之外,它还带来了其他三个方便的扩展。

【讨论】:

  • 注意:为了反映更改,请重新启动 conda 环境。
  • 注意:另外,您需要在那个环境中安装Jupyter(或者根据rakesh的回答可能是ipykernel)。否则 Jupyter 可以识别该环境,但无法在该环境中创建新笔记本。
  • @RockScience,考虑将其切换为可接受的答案。
  • nb_conda 应该安装在基础环境、目标环境还是两者中?请扩大答案,谢谢。
  • 有时nb_conda 与某些conda/pip 安装的库不兼容。设置新环境时,我建议您先安装nb_conda然后安装其他库
【解决方案2】:

问题一:查找当前笔记本的conda环境

在 Jupyter Notebooks 中打开笔记本并查看屏幕右上角。

例如,如果语言是 Python 并且它使用名为 env_name 的环境,则应该显示“Python [env_name]”。


问题 2:在不同的 conda 环境中启动 Jupyter Notebook

在运行 jupyter notebook 之前,使用 source activate <environment name> 在终端中激活 conda 环境。这个sets the default environment 用于 Jupyter Notebooks。否则,[Root] 环境是默认环境。

您还可以在 Jupyter Notebook 中创建新环境(主屏幕、Conda 选项卡,然后单击加号)。

您可以在任何您想要的环境中创建笔记本。选择主屏幕上的“文件”选项卡,然后单击“新建”下拉菜单,然后在该菜单中从列表中选择 Python 环境。

【讨论】:

  • 没有Conda标签怎么办?
  • which jupyter 返回/Users/name/anaconda/envs/myEnv/bin/jupyter,我在[] 中没有得到Conda 选项卡和环境名称。我的jupyter 版本是 4.2.0
  • 就我而言,在 conda install jupyter 之后,我停用了 env,然后运行 ​​jupyter notebook,然后我的 env 列在“新”下拉列表中。
  • @BigBoy1337 ink's answer conda install nb_conda 似乎是达到此答案中描述的状态的最直接方法。
【解决方案3】:

jupyter 正在执行哪个环境:

import sys
print(sys.executable)

为 jupyter notebook 创建内核

source activate myenv
python -m ipykernel install --user --name myenv --display-name "Python (myenv)"
source activate other-env
python -m ipykernel install --user --name other-env --display-name "Python (other-env)"

http://ipython.readthedocs.io/en/stable/install/kernel_install.html#kernel-install

【讨论】:

  • 这最终让我的 theano 环境从 jupyter 工作。谢谢!
  • 很好的解决方案!但是这些手动添加的ipykernel环境很难删除。
  • 谢谢。当 Jupyter Notebooks 打开时,我最终需要在 Kernels 选项卡中看到特定环境。
  • 删除在jupyter中启动终端并运行jupyter kernelspec uninstall [env_name]
  • 这是最好的答案。 nb_conda 充满了兼容性问题,并给基础环境带来了很多碎屑。
【解决方案4】:

如果上述 ans 不起作用,请尝试在新环境中运行 conda install ipykernel,然后从任何环境中运行 jupyter notebook,您将能够看到或在这些内核之间切换。

【讨论】:

  • 谢谢!我尝试了以上所有方法,这是唯一没有删除和重建环境的方法
  • 是的,这是正确的答案。 nb_conda 单独不起作用。
【解决方案5】:

您也可以在 Anaconda Navigator 中切换环境,安装 Jupiter 并运行它。

【讨论】:

  • 如果它抛出“内核错误”我们需要为内核安装用户,添加“python -m ipykernel install --user”
【解决方案6】:

要显示笔记本正在使用哪个 conda env,只需输入一个单元格:

!conda info

如果你有grep,更直接的方式:

!conda info | grep 'active env'

【讨论】:

  • 这是 OP 问题第 1 部分的最简单和最简单的答案。
【解决方案7】:

因为上面的答案都不适合我,所以我在这里写下最终解决了我在 Ubuntu 上的问题的解决方案。我的问题是:
我做了以下步骤:

  1. 激活我的环境:conda activate MyEnv
  2. 启动jupyter notebook:jupyter notebook

虽然MyEnv 在终端中处于活动状态并且在编写conda env list 时有一个星号,但是jupyter notebook 是在基本环境中启动的。 安装nb_condaipykernel 也没有解决我的问题。此外,conda 选项卡没有出现在 jupyter 笔记本中,并且单击内核或转到菜单 Kernel->Change Kernel 没有显示内核 MyEnv
解决方案是:在MyEnv环境中安装jupyter_environment_kernel

pip install environment_kernels

之后启动 jupyter notebook 时,它是在正确的环境下启动的。您还可以在不停止内核的情况下切换环境,方法是转到菜单 Kernel->Change Kernel 并选择所需的内核。

【讨论】:

  • 您应该直接从 Anaconda 桌面 GUI 环境创建环境。这个答案给出了使用 pip 修改 conda 环境的意外和不需要的副作用。您不应在同一环境中混合使用 pip 和 conda 命令。请参阅anaconda.com/blog/using-pip-in-a-conda-environment 了解更多信息。
【解决方案8】:

问题 1:我如何知道我的 jupyter notebook 在哪个 conda 环境中运行?

  • 启动您的 Anaconda Prompt 并运行命令 conda env list 以列出所有可用的 conda 环境。

    您可以清楚地看到我的 PC 上安装了两个不同的 conda 环境,我的 当前活动 环境是 root(Python 2.7),由路径前面的 星号(*) 符号表示。

问题 2:如何从新的 conda 环境启动 jupyter?

  • 现在,要启动所需的 conda 环境,只需运行 activate <environment name>。在这种情况下,activate py36

欲了解更多信息,请查看linkthis previous Stack Overflow question.

【讨论】:

    【解决方案9】:

    以下命令会直接在jupyter notebook中添加env。

    conda create --name test_env
    conda activate test_env
    conda install -c anaconda ipykernel
    python -m ipykernel install --user --name=test_env
    

    如果语言是 Python 并且使用名为 test_env 的环境,现在应该说“Python [test_env]”。

    【讨论】:

      【解决方案10】:

      要检查您的笔记本在哪个环境中运行,请在笔记本外壳中键入以下命令

      import sys
      print(sys.executable)
      

      要在新环境中启动笔记本,请先停用该环境。创建一个 conda 环境,然后安装 ipykernel。激活那个环境。在该环境中安装 jupyter。

      conda create --name {envname}
      conda install ipykernel --name {envname}
      python -m ipykernel install --prefix=C:/anaconda/envs/{envname} --name {envname}
      activate envname
      pip install jupyter
      
      

      在您的情况下,路径“C:/anaconda/envs/{envname}”可能不同,请相应检查。 完成所有步骤后,启动笔记本并执行步骤 1 在 shell 中运行以下命令。

      sys.executable
      

      这应该显示:Anaconda/envs/envname

      【讨论】:

        【解决方案11】:

        在 Ubuntu 20.04 上,上述建议均无效。

        即我激活了一个现有的环境。我发现(使用 sys.executable 和 sys.path)我的 jupyter notebook 内核正在运行 DEFAULT Anaconda python,而不是我在激活环境中安装的 python。这样做的后果是我的笔记本无法将我安装的软件包导入到这个特定的 Anaconda 环境中。

        按照上述说明(以及大量其他 URL),我安装了 ipykernel、nb_conda 和 nb_conda_kernels,然后运行:python -m ipykernel --user --name myenv。

        使用 Jupyter 笔记本中的 Kernels|Change Kernel... 菜单,我选择了 myenv,这是我在 python -m ipykernel 命令中指定的。

        但是,sys.executable 表明这并没有“坚持”。

        我尝试关闭并重新启动,但没有得到我选择的环境。

        最后,我简单地编辑了文件夹中的 kernel.json 文件:

        ~/.local/share/jupyter/kernels/myenv

        果然,尽管我已经执行了上面建议的所有步骤,但这个 JSON 文件中的第一个参数仍然显示默认的 python 位置:

        $Anaconda/bin/python(其中 $Anaconda 是我安装 anaconda 的位置)

        我用文本编辑器编辑了 kernel.json 文件,因此将其更改为:

        $Anaconda/envs/myenv/bin/python

        希望我对 myenv 的使用被理解为您应该将其替换为您的环境名称。

        编辑此文件后,我的 Jupyter 笔记本开始正常工作 - 即,它们使用为我激活的环境指定的 python,并且我能够导入安装在此环境中的包,但不能导入基本的 Anaconda 环境。

        显然,ipykernel、nb_conda 和 nb_conda_kernels 包集如何为 jupyter 配置 Anaconda 环境的方式有些混乱。

        【讨论】:

        • 我也必须更改~/.local/share/jupyter/kernels/<myenv>/kernel.json
        • 我可以确认此解决方案在 Windows 上也适用于我。需要编辑的文件应该在C:\\Users\\username\\AppData\\Roaming\\jupyter\\kernels\\myenv中找到,其中你需要将python.exe文件的路径改成你的环境中找到的,大概应该是这样:C:\\Users\\username\\anaconda3\\envs\\myenv\\python.exe
        【解决方案12】:

        我已经尝试了上面提到的所有方法,但没有任何效果,除了在新环境中安装 jupyter。

        激活新环境 conda activate new_env 将“new_env”替换为您的环境名称。

        接下来安装 jupyter '点安装 jupyter'

        您也可以通过进入 anaconda 导航器并选择正确的环境,然后从主页选项卡安装 jupyter notebook 来安装 jupyter

        【讨论】:

          【解决方案13】:

          除了上面的答案,还可以使用

          !which python
          

          在单元格中输入它,这将显示环境的路径。不知道是什么原因,但是在我的安装过程中,notebook中没有隔离环境,但是在激活环境和启动jupyter notebook的时候,使用的路径是安装在环境中的python。

          【讨论】:

            【解决方案14】:
            1. 要检查您的 Jupyter Notebook 运行的是哪个 Python,请尝试执行此代码。

            从平台导入 python_version 打印(python_version())

            1. 为了从您的环境中运行 jupyter notebook 激活 MYenv 并使用命令安装 jupyter notebook pip install jupyter notebook

            那么就 jupyter 笔记本

            【讨论】:

              【解决方案15】:

              为我解决问题的是我必须运行以下命令:

              python -m ipykernel install --user --name myenv --display-name "Python (myenv)"

              问题是我为另一个 conda python 环境打开了一个用/为内核制作的 jupyter notebook。从终端的输出中可以看到;从 conda 环境的终端运行 jupyter notebook 很方便,这样您就可以轻松查看显示的错误消息。然后很明显 notebook 试图从另一个环境运行 python。

              检查文件夹/文件:

              C:\Users\<username>\AppData\Roaming\jupyter\kernels\<env name>\kernel.json

               "argv": [
                "D:\\Users\\<username..path>\\envs\\<env name>\\python.exe",
                "-m",
                "ipykernel_launcher",
                "-f",
                "{connection_file}"
               ],
               "display_name": "Python (env name)",
               "language": "python",
               "metadata": {
                "debugger": true
               }
              }
              

              因此您可以在必要时检查并更正。

              其次,在使用anaconda/conda时,请确保你有一个健康的通道策略,并在创建新环境时执行以下命令:

              conda config --add channels conda-forge
              conda config --set channel_priority strict
              

              它为我解决了这个问题,希望对你也有帮助。

              【讨论】:

                猜你喜欢
                • 2019-06-06
                • 2019-07-15
                • 2023-03-16
                • 2020-04-03
                • 2019-03-09
                • 2017-01-28
                相关资源
                最近更新 更多