如何修复 ImportError:无法从“html.parser”导入名称“HTMLParseError”?

Posted

技术标签:

【中文标题】如何修复 ImportError:无法从“html.parser”导入名称“HTMLParseError”?【英文标题】:How to fix the ImportError: cannot import name 'HTMLParseError' from 'html.parser'? 【发布时间】:2019-12-30 04:22:04 【问题描述】:

我正在使用 python 3.7 和 beautifulsoup4-4.8.0 做一个项目。我找到了一个可能不正确的解决方案来修复 ImportError: cannot import name 'htmlParseError' from 'html.parser'。如果您能帮我验证一下,将不胜感激!

************************ 问题 ************************

我正在输出我在这里得到的原始错误,以帮助说明我做了什么以及为什么这样做。

Traceback(最近一次调用最后一次): 文件“./Youtube.py”,第 1 行,在 从 bs4 导入 BeautifulSoup 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/bs4/init.py”,第 29 行,在 从 .builder 导入 builder_registry 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/bs4/builder/init.py”,第 294 行,在 从 。导入 _htmlparser 文件“/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/bs4/builder/_htmlparser.py”,第 7 行,在 从 html.parser 导入 ( ImportError:无法从“html.parser”(/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/html/parser.py)导入名称“HTMLParseError”

***************我的解决方案***************

在错误输出中,它表明我们无法从文件 'html.parser' 导入 'HTMLParseError',它应该被实现。所以我做了我的研究(https://docs.python.org/3.4/library/html.parser.html),发现 HTMLParseError 自 3.3 版以来已被弃用,并在 3.5 版中被删除:事实证明,使用默认非严格模式的解析器从未引发此异常(我相信是我正在使用的)。

SOOOOO 基本上我所做的只是删除从位于文件 (/Library/Frameworks/Python.framework/Versions/3.7/lib/python3 的“html.parser”中导入“HTMLParseError”的那行代码.7/site-packages/bs4/builder/_htmlparser.py)

瞧!它消除了错误。我不知道这在技术上是否正确。如果有人可以帮助我验证此解决方案,将非常感激!

【问题讨论】:

ImportError 本来就不应该传到你的——BeautifulSoup 包含应该自动处理它的代码。您执行的编辑可能会破坏 BeautifulSoup 的处理。尝试卸载并重新安装 bs4。 好的,是的。我没有使用正确的版本。我不得不运行 pip3 install --ignore-installed beautifulsoup4 来安装 py3 的可比版本,因为 bs4 是 distutils 安装的(我的真正问题在这里哈哈)。他们确实在 py3 版本中通过添加 try except 块处理了这个错误,我的错误得到了解决。谢谢!! 【参考方案1】:
$ pip install beautifulsoup4 --force-reinstall
$ python3 -m pip install beautifulsoup4 --force-reinstall

【讨论】:

【参考方案2】:

我能够通过运行以下命令来解决我的问题。

pip3 install —ignore-installed beautifulsoup4

我的问题是我没有使用 py3 兼容版本的 bs4。因为 bs4 是 distutils 安装的,我不得不使用 --ignore-installed 标志来解决我的错误:无法卸载'beautifulsoup4'。这是一个distutils安装的项目...

感谢user2357112的评论!

【讨论】:

这不能解决在 Fedora 35 上为 Python2 和 Python3 混合安装 bs4 的问题,但上面的答案是大多数人想要的,另外还有 'python3 -m pip install...'线固定的东西。

以上是关于如何修复 ImportError:无法从“html.parser”导入名称“HTMLParseError”?的主要内容,如果未能解决你的问题,请参考以下文章

如何修复“ImportError:无法导入名称 IncompleteRead”?

import pymongo 导致“ImportError: cannot import name BSON”。你如何修复导入错误?

pip install, 如何修复 ImportError

如何修复“ImportError:必须安装 Pandas >= 0.19.2;但是,找不到”?

如何修复 Python 中的“ImportError:动态模块未定义模块导出函数 (PyInit_cv2)”错误?

如何修复 ImportError:尝试在没有已知父包的情况下进行相对导入