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

2024-10-01 11:26:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试在新安装的ubuntu19.04上使用Jupyter笔记本。我已经完成了通常的安装步骤,但是Jupyter不起作用。当我试着打开一个笔记本时

500 : Internal Server Error

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

^{pr2}$

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

更新:

例行系统更新后,问题又出现了。这意味着删除pip安装包的.local目录(然后重新安装)并不一定是一个长期的修复,因为自动更新似乎会导致问题再次出现。也有可能是一些其他的包(通过apt安装)虽然没有显式地与python相关,但在某种程度上改变了python环境,从而破坏了Jupyter笔记本电脑。在

任何意见或建议将不胜感激。在


Tags: pip方法答案服务器终端server错误步骤
2条回答

我也有过类似的经历,找到了Mrule的答案。删除/重命名.local对我也有用,但他的长期解决方案并不令人遗憾。所以我深入研究了一下为什么第一个解决方案有效。在

结果是which jupyter.local未删除时返回$HOME/.local/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安装的包之间存在某种程度的冲突(我找不到确切的原因)。在

(回答我自己的问题)

根据我的经验,这些问题通常是由通过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。在
  • 这(暂时)起作用了。在

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

相关问题 更多 >