AWS EMR PySpark安装Python包遇Python.h缺失错误的解决咨询
解决AWS EMR PySpark安装Python包时的编译错误
问题原因
报错fatal error: Python.h: No such file or directory是因为缺少Python开发头文件和编译工具;而你执行的sudo yum install python-dev无效,是因为Amazon Linux(EMR默认系统)的Python开发包命名不是python-dev,而是按Python版本区分的python2-devel或python3-devel。
解决方案
步骤1:安装系统编译依赖
在EMR集群的主节点(或你运行PySpark的节点)执行以下命令:
sudo yum install -y gcc python3-devel
gcc是编译C扩展需要的基础编译器python3-devel包含Python3的头文件(如Python.h)和开发库,EMR 6.x及以上版本默认使用Python3,因此用这个包;如果是旧版EMR使用Python2,替换为python2-devel即可。
步骤2:重新安装Python包
依赖安装完成后,回到PySpark内核中执行:
sc.install_pypi_package("statsmodels") sc.install_pypi_package("s3fs")
进阶:集群全局预安装依赖(可选)
如果需要集群所有节点都能直接使用这些包,建议在创建EMR集群时添加引导操作(Bootstrap Action),执行以下脚本:
#!/bin/bash sudo yum install -y gcc python3-devel pip3 install statsmodels s3fs
这样集群启动时会自动在所有节点完成依赖和Python包的安装,避免后续逐个节点操作。
内容的提问来源于stack exchange,提问作者Srinath
相关产品推荐
相关产品推荐

