首页 > 解决方案 > Jupyter“500:内部服务器错误”;“ImportError:无法导入名称 ConverterMapping”

问题描述

我正在尝试在全新安装的 Ubuntu 19.04 上使用 Jupyter notebook。我已经完成了通常的安装步骤,但 Jupyter 不起作用。当我尝试打开笔记本时,我得到

500 : Internal Server Error

当我查看终端时,我看到 Jupyter 遇到了错误

ImportError: cannot import name ConverterMapping

我已经搜索并找到了有关 Jupyter 中内部服务器错误的其他原因的问题/答案,但我找不到解决 ConverterMapping 问题的方法。我已尝试卸载 ( pip uninstall ...) 并重新安装 ( pip install --user ...) 所有与 Jypyter 相关的软件包,但没有任何效果。

更新:

例行系统更新后,问题又回来了。这向我表明,删除已安装软件包的.local目录pip(然后重新安装)不一定是长期修复,因为自动更新似乎会导致问题再次出现。也有可能其他一些包(通过 apt 安装)虽然没有明确与 python 相关,但以某种方式改变了 python 环境,从而破坏了 Jupyter 笔记本。

任何想法或建议将不胜感激。

标签: pythonjupyter-notebookjupyterubuntu-19.04

解决方案


(回答我自己的问题)

根据我的经验,这些问题通常是由通过安装的 python 包apt与通过安装的包之间的兼容性问题引起的pip

不幸的是,我无法重建安装 jupyter/scipy/etc 环境所采取的一系列冗长步骤。某些包必须是通过 拉入的,apt而其他包必须是通过 拉入的pip,导致版本冲突。

这种方法最初解决了这个问题:

  • 按照这个答案,我跑去python -c "import site; print(site.USER_BASE)"寻找 pip 安装--user包的位置
  • 对我来说,这是~/.local
  • 我开始~/.local消除~/.local_disabled所有本地安装的软件包
  • 此时,Jupyter 又开始工作了,(它一定是通过系统 python 安装的apt)。
  • 我只添加了用户包的最小子集,并且会留意不兼容性。
  • 我想避免通过 Jupyter/ipython 引入apt可能是将来避免此问题的更好方法。

后续系统更新后,问题又回来了

这似乎证实了问题是由于通过安装的 python 包apt与通过pip. 这一次,为了解决这个问题,我:

  • apt通过(但不是随 Ubuntu 安装的核心系统的一部分)安装的已卸载 python 包。这主要包括 jupyter 及其许多依赖项。
  • 使用pip install jupyter --user.
  • 这是有效的(目前)。

(请随时编辑/评论/扩展此答案。)


推荐阅读