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

如何解决subprocess.run使用os.path生成的cwd路径报错问题

问题排查与修复方案

你遇到的报错和subprocess.run是否接受os.path生成的路径无关,核心问题出在路径定义阶段:
你使用os.path.join("opt", "airflow")生成路径时,第一个片段opt没有前导斜杠,生成的是相对于当前Python脚本运行目录的相对路径opt/airflow,而非你预期的根目录下的绝对路径/opt/airflow,所以cwd参数指向的地址不存在,触发FileNotFoundError。

os.path生成的路径本身是合法的字符串,完全可以直接传入subprocess.run的所有参数位,不需要硬编码。

修复方案

  • 方案1:定义路径时直接使用带前导斜杠的根路径片段
# 第一个参数改为带根目录标识的"/opt"
airflow_home = os.path.join("/opt", "airflow")
airflow_docs = os.path.join(airflow_home, "docs")
  • 方案2:若已生成相对路径,可手动补全为根目录下的绝对路径
airflow_docs = os.path.join("/", airflow_docs)
  • 优化建议:你当前的写法混用了shell=True和列表传参,不符合最佳实践。如果开启shell=True建议直接传命令字符串,若传列表参数建议关闭shell=True,可以规避额外的shell解析问题,同时提升安全性:
# 关闭shell=True的写法,更安全
subprocess.run(["sphinx-apidoc", "-o", "./", "../plugins"],
               cwd=airflow_docs)

内容的提问来源于stack exchange,提问作者Javier Lopez Tomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:04