Jupyter 扩展安装失败:错误提示 'terminado' 未找到,但我应该已经拥有它

Jupyter Extension Installation Failed: Error says 'terminado' wasn't found, but I should already have it

我尝试按照说明安装 jupyter 扩展 here

指令中名为 'Install the python package' 的第一步已成功。 但是第二个名为 'Install javascript and css files' 的失败了。 我按照提示执行了jupyter contrib nbextension install --user,但是出现了错误

错误显示:pkg_resources.DistributionNotFound: The 'terminado>=0.8.1' distribution was not found and is required by notebook。 (显示的所有回溯如下。) 但是我确认我已经安装了 'terminado' v0.8.2 包,它是通过 pip 安装的。

我该如何处理这个问题?问题仅仅是 jupyter 命令不知道 'terminado' 的安装位置吗?还是问题更严重?


所有报错信息如下:

Traceback (most recent call last):
  File "/usr/local/bin/jupyter-contrib", line 5, in <module>
    from pkg_resources import load_entry_point
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3241, in <module>
    @_call_aside
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3225, in _call_aside
    f(*args, **kwargs)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 3254, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 583, in _build_master
    ws.require(__requires__)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 900, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/pkg_resources/__init__.py", line 786, in resolve
    raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'terminado>=0.8.1' distribution was not found and is required by notebook

我正在使用 macOS Catalina(但同样的问题出现在 Mojave 上。

总结

问题是,看到错误消息可能会发现,jupyter contrib 命令使用 python2,而不是我偏好的 python3。

问题

命令使用python2是由于/usr/local/bin/jupyter-contrib文件的shebang引起的。 shebang 是 #!/usr/bin/python,这意味着它指定 jupyter-contrib 使用 python 解释器,它位于 /usr/bin/python 上,在我的机器上是 python2(以及许多其他 Mac 机器,也许)。 因此,您应该使用 shebang 指定 python3 而不是 python2.

解决方案

  1. 首先,获取您的 python3 安装路径,如下所示:

    $ which python3

    复制返回的路径。

  2. 打开 /usr/local/bin/jupyter-contrib 文件。注意这个文件是只读的但是你必须重写它,所以你应该用 sudo:

    打开它

    $ sudo vim /usr/local/bin/jupyter-contrib

  3. 重写第 1 行的 shebang。 Shebang现在可能是这样的:

    #!/usr/bin/python

    其中它指定 python2 作为它的解释器。您应该将路径重写为您在步骤 1 中复制的 python3 的路径:

    #!{{Paste your python3's path}}

  4. 保存文件。

就是这样。 现在 jupyter-contrib 使用 python3。 所以 jupyter contrib nbextension install --user 命令应该成功。