【问题标题】:Jupyter "500: Internal Server Error"; "ImportError: cannot import name ConverterMapping"Jupyter“500:内部服务器错误”; “ImportError:无法导入名称 ConverterMapping”
【发布时间】:2019-11-19 18:36:30
【问题描述】:

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

500 : Internal Server Error

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

ImportError: cannot import name ConverterMapping

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

更新:

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

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

【问题讨论】:

    标签: python jupyter-notebook jupyter ubuntu-19.04


    【解决方案1】:

    (回答我自己的问题)

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

    不幸的是,我无法重新构建安装 jupyter/scipy/etc 环境所采取的一系列冗长步骤。有些包一定是通过apt拉进来的,有些是通过pip拉进来的,导致版本冲突。

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

    • this answer 之后,我运行python -c "import site; print(site.USER_BASE)" 来查找pip 安装--user 包的位置
    • 对我来说,这是~/.local
    • 我将~/.local 移至~/.local_disabled 以消除所有本地安装的包
    • 此时,Jupyter 又开始工作了,(它一定是通过apt 与系统python 一起安装的)。
    • 我只添加了用户包的最小子集,并且会留意不兼容的地方。
    • 我想避免通过apt 引入 Jupyter/ipython 可能是将来避免此问题的更好方法。

    后续系统更新后问题再次出现

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

    • 已卸载通过apt 安装的python 包(但不是随Ubuntu 一起安装的核心系统的一部分)。这主要包括 jupyter 及其许多依赖项。
    • 使用 pip install jupyter --user 重新安装了 Jupyter。
    • 这正在工作(目前)。

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

    【讨论】:

      【解决方案2】:

      我也有类似经历,找到Mrule的回答。删除/重命名.local 也对我有用,但他的长期解决方案并不可悲。因此,我深入挖掘了第一个解决方案的原因。

      .local 未被删除时which jupyter 返回$HOME/.local/bin/jupyter,而当我删除时/usr/bin/jupyter 返回。所以问题出在 pip 包中(通过pip install --user jupyter 选项安装在.local 中的包)。

      我之前曾多次执行sudo pip uninstall jupyter,但这并没有删除.local 中的包(请参阅here)。您必须在没有sudo 的情况下执行pip uninstall jupyter 才能卸载主目录中的那些(或手动删除它们)。通过使用pip list | grep jupyterapt list | grep jupyter 找到它们,我卸载了系统中任何其他与jupyter 相关的包。

      最后通过sudo apt install jupyter 重新安装了jupyter。现在它似乎工作了。

      底线是通过 pip 系统范围和主目录 (.local) 安装的软件包和通过 apt 安装的软件包以某种方式发生冲突(我找不到确切的原因)。

      【讨论】:

        【解决方案3】:

        对此最安全的解决方案是创建一个虚拟环境并从中运行您的 jupyter。这清楚地将 pip 和 apt 的所有操作分开。它对我有用。我用的是 Ubuntu

        要创建虚拟环境,请运行:

        1)sudo pip install --upgrade virtualenv (install virtualenv)
        
        2)virtualenv  xyz --python=python3.7  (xyz is the name of the new virtual environment)
        
        3) cd into the directory of xyz
        
        4) source ./bin/activate 
        
        5)pip install jupyter
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-09
          • 1970-01-01
          • 2016-08-19
          • 1970-01-01
          • 1970-01-01
          • 2022-06-12
          • 2021-04-25
          • 1970-01-01
          相关资源
          最近更新 更多