【问题标题】:Force Jupyter to use Python 3.7 executable instead of Python 3.8强制 Jupyter 使用 Python 3.7 可执行文件而不是 Python 3.8
【发布时间】:2020-06-03 16:37:16
【问题描述】:

这个真的把我逼疯了。

我在 macOS 上安装了 Python3.8 并使用python3 -m install ipykernel 让 Jupyter 使用这个新版本。

不过,现在我将Python3.8彻底从系统中移除,重新安装了Python3.7,暂时还想坚持下去。

尽管彻底卸载、删除、擦除任何 Jupyter/Notebook/Ipykernel 模块,然后在 Python3.7 的pip3 下重新安装它们,但没有任何作用:Jupyter 仍会寻找(不存在的)Python@3.8 安装。

这是打开笔记本并尝试启动内核时在日志中显示的内容:

[E 13:25:29.942 NotebookApp] Failed to run command:
    ['/usr/local/opt/python@3.8/bin/python3.8', '-m', 'ipykernel_launcher', '-f', '/Users/jivan/Library/Jupyter/runtime/kernel-fe88c716-f146-4328-b1f7-6199f2b44d12.json']
        PATH='/Users/jivan/.cargo/bin:/Users/jivan/.cargo/bin:/usr/local/sbin:/Users/jivan/google-cloud-sdk/bin:/Users/jivan/.cargo/bin:/Users/jivan/.local/bin:/usr/local/sbin:/Users/jivan/bin:/usr/local/bin:/Users/jivan/.cargo/bin:/usr/local/opt/python@3.8/bin:/Users/jivan/.cargo/bin:/Users/jivan/.cargo/bin:/usr/local/sbin:/Users/jivan/google-cloud-sdk/bin:/Users/jivan/.cargo/bin:/Users/jivan/.local/bin:/usr/local/sbin:/Users/jivan/bin:/usr/local/bin:/Users/jivan/.cargo/bin:/Users/jivan/.cargo/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Apple/bin:/opt/X11/bin'
        with kwargs:
    {'stdin': -1, 'stdout': None, 'stderr': None, 'cwd': '/Users/jivan/Downloads/dresses', 'start_new_session': True}

/usr/local/opt/python@3.8/bin/python3.8 行指的是现已删除的 Python3.8 安装,我想强制 Jupyter 改为以 Python3.7 可执行文件为目标。

注意:当我在终端输入python3时,它指向的是3.7版本:

$ python3
Python 3.7.6 (default, Feb 11 2020, 07:50:21)
[Clang 11.0.0 (clang-1100.0.33.17)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

是否有一个配置文件在卸载过程中没有被删除,我应该修改它?我猜某处的某个配置文件指定了硬编码的/usr/local/opt/python@3.8/bin/python3.8,而 Jupyter 读取了这个文件,但这只是一个假设。到目前为止,我还没有在系统中找到任何包含此文本的文件。

更新

部分回溯显示了以下几行,这让我认为 Jupyter 是从 Python3.7 正确启动的,但出于某种原因,它正试图用 Python3.8 生成一个子进程。很奇怪。

      File "/usr/local/lib/python3.7/site-packages/jupyter_client/manager.py", line 204, in _launch_kernel
        return launch_kernel(kernel_cmd, **kw)
      File "/usr/local/lib/python3.7/site-packages/jupyter_client/launcher.py", line 138, in launch_kernel
        proc = Popen(cmd, **kwargs)
      File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 800, in __init__
        restore_signals, start_new_session)
      File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 1551, in _execute_child
        raise child_exception_type(errno_num, err_msg, err_filename)
    FileNotFoundError: [Errno 2] No such file or directory: '/usr/local/opt/python@3.8/bin/python3.8': '/usr/local/opt/python@3.8/bin/python3.8'

【问题讨论】:

  • python3.7 -m jupyter notebook ?
  • @furas 你会笑的,但是...它仍在尝试启动/usr/local/opt/python@3.8/bin/python3.8
  • stackoverflow.com/a/48069394/8661327 这能回答你的问题吗?
  • 不,有两个原因:我想要一个没有虚拟环境的系统范围的安装。我也已经尝试过这个答案中列出的步骤(没有在 virtualenv 中),但没有帮助。

标签: python python-3.x macos jupyter-notebook


【解决方案1】:

我建议重新安装 Jupyter 而不仅仅是 ipykernel 包。

否则,首先通过在终端中运行$(which jupyter) 来获取jupyter 可执行文件的位置。

当您在终端中运行cat $(which jupyter) 时,您会看到文件中的第一行引用了较旧的python 可执行文件路径。

在你的编辑器中打开这个文件,并将路径更改为在终端中运行$(which python3)的结果

【讨论】:

  • 好主意,但是...第一行是#!/usr/local/opt/python/bin/python3.7(又名正确的,所需的版本)。尽管如此,我仍然收到问题中提到的错误。
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 2021-02-02
  • 2019-04-25
  • 2020-02-13
  • 1970-01-01
  • 2022-10-05
  • 2023-02-07
相关资源
最近更新 更多