Jupyter“ 500:内部服务器错误”; “ ImportError:无法导入名称ConverterMapping”

时间:2019-07-10 07:29:40

标签: python jupyter-notebook jupyter ubuntu-19.04

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

500 : Internal Server Error

当我在终端中查看时,我发现Jupyter遇到了错误

ImportError: cannot import name ConverterMapping

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

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

3 个答案:

答案 0 :(得分:2)

对此最安全的解决方案是创建一个虚拟环境并从中运行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

答案 1 :(得分:1)

我也有类似的经历,并找到了Mrule的答案。删除/重命名.local也对我有用,但是他的长期解决方案并不令人遗憾。因此,我深入研究了第一个解决方案的工作原理。

结果是,当未删除which jupyter时,$HOME/.local/bin/jupyter返回了.local,而当我删除时,返回了/usr/bin/jupyter。因此问题出在pip软件包中(通过.local选项安装在pip install --user jupyter中的软件包)。

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

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

最重要的是,通过pip系统范围和主目录(.local)安装的软件包和通过apt安装的软件包存在某种冲突(我找不到确切的原因) )。

答案 2 :(得分:0)

(回答我自己的问题)

根据我的经验,这些问题通常是由通过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可能是将来避免此问题的更好方法。

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