根本原因是 PySpark 2.4.x 版本与新版 pypandoc 的兼容性问题


错误原因

  1. PySpark 2.4.x 的依赖问题
    PySpark 2.4.x 在构建时依赖 pypandoc 将 Markdown 文档转换为 reStructuredText(通过 pypandoc.convert()),但新版 pypandoc(>=1.8)移除了 convert 方法,导致构建失败。

  2. 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](

更多推荐