【问题标题】:Jupyter interpreter permanently changedJupyter 解释器永久更改
【发布时间】:2020-11-22 00:34:48
【问题描述】:

我正在玩一个新的库,它将一个新的 venv 和解释器 (python 3.8) 设置到以下位置。

import sys
sys.executable
'/Users/User/tensorflow_macos_venv/bin/python'

虽然当我激活 venv 时这很好,但一旦我停用它并再次运行 Anaconda3 jupyter notebook,我仍然看到相同的解释器。有人可以帮助解释如何将其恢复为原始状态吗?我尝试转到“更改内核”选项(as mentioned in this answer),但在那里我只看到一个选项“python 3”。

澄清一下,在终端中它仍然显示默认解释器是正确的 -

$which python
$/Users/User/opt/anaconda3/bin/python

更重要的是,有没有一种方法可以让我通过笔记本选项同时使用它们(更改内核选项)

编辑:我使用的是 mac,而不是 Windows 或 linux。 编辑:看来我已经用新的 venv 解释器路径覆盖了 Python 3 内核的解释器路径。我已经在下面提到了我为解决此问题而采取的步骤。

【问题讨论】:

    标签: python jupyter-notebook virtualenv interpreter


    【解决方案1】:

    我花了一些时间研究并找到了一种方法来解决这个问题并将多个内核添加到笔记本中。我不确定这是否是最好的方法,但是,这可以帮助其他面临问题的人。

    $which python
    $/Users/User/opt/anaconda3/bin/python
    

    上面的命令显示了系统的默认解释器,但是,Jupyter notebook 从它在运行时读取的connection file 中获取其选择的解释器。它可以在这里找到,但文件本身并不重要 -

    from jupyter_client import find_connection_file
    find_connection_file()
    
    '/Users/User/Library/Jupyter/runtime/kernel-b1fa5520-5ae5-431a-8768-4ab4b755829f.json'
    

    重要的是位置,因为此连接文件引用了可用的kernel.json 文件,这些文件实际上存储了有关可用于 jupyter notebook 的解释器的详细信息。

    此位置与 - '/Users/User/Library/Jupyter/kernels' 位于同一路径下

    在这里,您会为每个可用的解释器找到一个文件夹(默认情况下只有一个文件夹)。在文件夹(通常称为 python3)内,您会找到 kernel.json

    就我而言,它应该如下所示。但是,我的路径不正确。我将其更改回默认系统 python 的路径,如下所示,它解决了我返回原始解释器的第一个问题-

    {
     "argv": [
      "/Users/User/opt/anaconda3/bin/python",  #<------ fixed this
      "-m",
      "ipykernel_launcher",
      "-f",
      "{connection_file}"
     ],
     "display_name": "Python 3",
     "language": "python"
    }
    

    接下来是向 jupyter notebook 添加另一个解释器

    如果您有另一个解释器要添加到内核选择中(菜单 > 内核 > 更改内核),那么您需要做的就是 -

    1. 在'/Users/User/Library/Jupyter/kernels' 中创建一个新文件夹
    2. 把上面的kernel.json复制进去
    3. 修改路径和显示名称

    就我而言,我做了以下 -

    {
     "argv": [
      "/Users/User/tensorflow_macos_venv/bin/python",  #<---- changed this
      "-m",
      "ipykernel_launcher",
      "-f",
      "{connection_file}"
     ],
     "display_name": "tf_mac",  #<---- changed this
     "language": "python"
    }
    

    完成后,您可以使用 -

    检查可用的内核
    !jupyter kernelspec list
    
    Available kernels:
      python3    /Users/User/Library/Jupyter/kernels/python3
      tf_mac     /Users/User/Library/Jupyter/kernels/tf_mac
    

    这意味着现在您可以进入 jupyter notebook 菜单 Kernels > Change Kernels 并找到上述 2 个内核在运行中进行切换。

    这就是我解决上述问题的方法。接受更好的方法,因为我相信会有。

    【讨论】:

      猜你喜欢
      • 2020-02-26
      • 1970-01-01
      • 2011-12-31
      • 2020-03-16
      • 1970-01-01
      • 2012-05-28
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多