EMR 6.3.0安装Pystan成功仍报ModuleNotFoundError问题求助
EMR集群安装pystan后仍报模块不存在的常见原因
- Python多版本路径不匹配
EMR节点默认预装多个Python版本,bootstrap执行的pip命令可能未绑定你运行代码使用的Python3.7环境,pystan被安装到了其他Python版本的site-packages目录下,导致Python3.7进程无法索引到对应库。
验证修复方式:使用目标Python解释器直接调用pip执行安装,命令为/usr/bin/python3.7 -m pip install pystan,需替换为你环境中Python3.7的实际路径。 - 安装用户与运行用户权限隔离
bootstrap脚本默认以root身份执行,若安装时未指定全局路径,pystan会被安装到/root/.local/lib这类root专属的用户库目录下。而EMR作业通常以hadoop、emr-user等普通用户身份运行,无权限访问root用户的库目录,自然无法找到模块。
验证修复方式:执行安装时添加--target参数指定所有用户均可访问的全局库路径,或给运行作业的普通用户单独执行pip install --user pystan完成安装。 - 作业运行环境隔离
若你运行的是Spark、YARN类型的分布式作业,作业执行时会使用独立的环境配置:- Spark任务的
spark.executorEnv.PYSPARK_PYTHON参数指定的Python解释器与你安装pystan的Python3.7不是同一个 - 作业提交时指定了虚拟环境、容器镜像作为运行环境,该环境中未预装pystan
上述情况都会导致运行时找不到已安装的库。
- Spark任务的
- pystan版本导入语法差异
pystan 3.x及以上版本的导入语法已调整,原import pystan仅适用于pystan 2.x版本,若你通过pip安装的是最新版pystan,就会抛出ModuleNotFoundError: No module named 'pystan'报错。
验证修复方式:执行pip show pystan查看已安装的版本,若为3.x版本可选择降级到2.x版本,或将导入语句调整为import stan。
内容的提问来源于stack exchange,提问作者Ima Miri
相关产品推荐
相关产品推荐

