pip install pyspark时报错误的解决方案笔记: AttributeError: module ‘pypandoc‘ has no attribute ‘convert‘
·
根本原因是 PySpark 2.4.x 版本与新版 pypandoc 的兼容性问题。
错误原因
-
PySpark 2.4.x 的依赖问题
PySpark 2.4.x 在构建时依赖pypandoc将 Markdown 文档转换为 reStructuredText(通过pypandoc.convert()),但新版pypandoc(>=1.8)移除了convert方法,导致构建失败。 -
Poetry 的 PEP 517 构建机制
Poetry 默认使用 PEP 517 构建(通过--use-pep517),会动态安装构建依赖(包括最新版pypandoc),而旧版 PySpark 未限制pypandoc的版本上限,导致冲突。
解决方案
方案 1:升级 PySpark(推荐)
直接升级到 PySpark 3.0+ 版本(如 3.3.0),这些版本已移除对 pypandoc 的依赖:
pip install --no-build-isolation pyspark==3.3.0
方案 2:降级 pypandoc(如果对pyspark版本有限制,则降低pypandoc到兼容版本)
如果必须使用 PySpark 2.4.x,需强制使用兼容的 pypandoc 版本(<1.8):
# 手动安装旧版 pypandoc
pip install "pypandoc<1.8" --no-build-isolation
# 手动安装PySpark
pip install --no-build-isolation pyspark==2.4.5
根本原因总结
- 上游问题:PySpark 2.4.x 未限制
pypandoc版本,而新版pypandoc做了不兼容变更。 - 构建隔离:Poetry 的 PEP 517 构建会临时安装最新依赖,导致冲突。
参考github链接:[Apache Spark 移除了 pypandoc 的 PR](
更多推荐
所有评论(0)