You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark-Submit使用Venv打包环境运行报错:找不到Python程序及模块缺失

解决Spark集群中使用venv-pack打包环境时PYSPARK_PYTHON路径错误的问题

问题回顾

使用bitnami/spark镜像搭建的Spark集群,通过venv-pack打包了包含fuzzy-c-means库的Python 3.7虚拟环境,执行spark-submit时遇到两个问题:

  • 设置PYSPARK_PYTHON=./environment/bin/python时,报错Cannot run program "./environment/bin/python": error=2, No such file or directory
  • 移除PYSPARK_PYTHON设置后,代码能运行但提示找不到fcmeans模块

解决方案

1. 重新打包可重定位的虚拟环境

venv-pack默认打包的虚拟环境包含绝对路径依赖,在不同镜像/环境中运行时会出现路径不匹配问题。重新打包时添加--relocatable参数,让虚拟环境支持路径重定位:

venv-pack --relocatable -o environment.tar.gz

2. 修改Spark提交命令,正确指定Python路径

使用Spark配置参数明确指定driver和executor使用的Python路径,替代直接设置系统环境变量:

spark-submit \
  --archives ./environment.tar.gz#environment \
  --conf spark.pyspark.python=./environment/bin/python \
  --conf spark.pyspark.driver.python=./environment/bin/python \
  ./app.py

3. 验证集群节点依赖(可选)

如果仍出现执行错误,检查bitnami/spark镜像是否安装了Python 3.7所需的系统依赖库(如libpython3.7),可通过在镜像中执行以下命令安装:

apt-get update && apt-get install -y libpython3.7

原因说明

  • 未添加--relocatable参数打包的虚拟环境,其内部Python二进制文件和库路径为打包环境的绝对路径,在Spark集群节点(bitnami/spark镜像)中无法匹配,导致路径找不到错误。
  • 不设置PYSPARK_PYTHON时,Spark使用集群默认的Python环境,该环境未安装fuzzy-c-means库,因此出现模块缺失错误。

内容的提问来源于stack exchange,提问作者Hiago Reis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 11:45:28