Python 3.13缺失typing模块,如何绕过该问题启动PySpark?
解决Python 3.13下启动PySpark的typing模块报错问题
报错信息
PS C:\spark-3.4.4-bin-hadoop3\bin> pyspark Python 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. Traceback (most recent call last): File "C:\spark-3.4.4-bin-hadoop3\python\pyspark\shell.py", line 31, in <module> import pyspark File "C:\spark-3.4.4-bin-hadoop3\python\pyspark\__init__.py", line 65, in <module> from pyspark.broadcast import Broadcast File "C:\spark-3.4.4-bin-hadoop3\python\pyspark\broadcast.py", line 38, in <module> from typing.io import BinaryIO # type: ignore[import] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ModuleNotFoundError: No module named 'typing.io'; 'typing' is not a package
问题原因
PySpark 3.4.4版本发布时未适配Python 3.13,而Python 3.13中移除了typing.io模块(相关IO类型已迁移至标准库io模块),导致代码引用失效触发报错。
解决方法
降级Python版本
安装Python 3.12及以下版本(PySpark 3.4.x官方支持的最高Python版本为3.12),配置PySpark使用该版本Python后重新启动。升级PySpark到兼容版本
升级至PySpark 3.5.0及以上版本,这些版本已适配Python 3.13的typing模块变更。执行以下命令完成升级:pip install --upgrade pyspark升级后即可正常启动pyspark。
临时修改PySpark源码(不推荐)
找到报错文件C:\spark-3.4.4-bin-hadoop3\python\pyspark\broadcast.py,将第38行的from typing.io import BinaryIO替换为from io import BinaryIO,保存后再启动pyspark。此方法仅为临时绕过方案,后续升级PySpark会覆盖修改,不建议长期使用。
内容的提问来源于stack exchange,提问作者digi store
相关产品推荐
相关产品推荐

