使用subprocess.call运行bash脚本时无法访问anaconda3/bin内程序的问题
数据分析自动化流程部署异常问题
运行现状
- 开发验证阶段的正常表现:
- 自研数据分析bash脚本,直接在终端执行时可完整跑通全部分析流程
- 为提升流程自动化程度,配套编写Python脚本,通过
subprocess.call接口调用上述bash脚本,实现自动切换工作目录、重复执行脚本完成多批次分析的逻辑,这套逻辑在个人MacBook上运行完全正常
- Linux服务器部署后的异常表现:
- bash脚本直接在服务器终端手动运行时功能完全正常,可顺畅完成全部分析
- 但通过Python脚本的
subprocess.call接口调用该bash脚本时,会报错提示找不到分析流程依赖的相关可执行程序 - 所有依赖的可执行程序均存放在服务器的
anaconda3/bin目录下,甚至连pip这类常规工具,在subprocess触发的调用流程中都无法被识别
- 已评估的维护成本偏高的临时方案:在bash脚本中为所有程序手动追加完整路径,该方式需要逐行修改脚本、后续新增依赖也要同步更新路径,长期维护效率极低
核心待解答问题
- 有没有更优的方案,让被调用的脚本可以正确识别所需的程序路径?
- 为什么同一套bash脚本,在终端直接运行时路径识别完全正常,通过
subprocess.call接口调用时就会出现路径识别失败的问题?
当前使用的Python脚本
import subprocess import os path_list = ["Path1", "Path2" ] for path in path_list: os.chdir(path) subprocess.call("Users/.../bash_script", shell=True)
内容的提问来源于stack exchange,提问作者prometheus
相关产品推荐
相关产品推荐

