命令行pyspark运行正常,执行文件却提示‘No module named pyspark’的原因
解决pyspark命令可运行但脚本提示"No module named pyspark"的问题
核心原因
直接运行Python脚本时,系统未加载pyspark命令自动配置的Spark环境变量,导致Python解释器找不到pyspark模块。
解决方案
1. 在脚本开头手动添加Spark路径
找到你的Spark安装目录,在脚本最顶部插入以下代码(替换实际路径):
import sys import os # 替换为你的Spark安装路径 spark_home = "/opt/spark" sys.path.insert(0, os.path.join(spark_home, "python")) # 注意py4j的版本号要匹配你Spark目录里的实际文件 sys.path.insert(0, os.path.join(spark_home, "python/lib/py4j-0.10.9.7.zip"))
2. 配置全局环境变量
将Spark的Python路径加入系统PYTHONPATH,确保所有Python环境都能识别:
- Linux/macOS:在
~/.bashrc或~/.zshrc中添加:
执行export SPARK_HOME=/opt/spark export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-*.zip:$PYTHONPATHsource ~/.bashrc(对应你的配置文件)使配置生效。 - Windows:在系统环境变量中新增
PYTHONPATH,值设为:%SPARK_HOME%\python;%SPARK_HOME%\python\lib\py4j-*.zip
3. 用spark-submit运行脚本
直接使用Spark官方提交命令,它会自动加载所有必要的环境配置:
spark-submit your_script.py
4. 统一Python解释器
确认pyspark使用的Python和你运行脚本的Python是同一个版本:
- 启动
pyspark后,在Shell中执行:import sys; print(sys.executable),得到Python路径 - 用该路径运行脚本:
/path/to/python your_script.py
内容的提问来源于stack exchange,提问作者ShivaKumar__
相关产品推荐
相关产品推荐

