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

使用Python脚本执行kubectl命令报FileNotFoundError如何解决?

报错根因

subprocess模块默认执行规则为:若传入subprocess.check_output()的第一个参数是完整字符串,会将整个字符串视为单个可执行文件的路径进行检索,不会自动拆分命令名和后续参数。你的代码中系统尝试搜索名为kubectl apply -f deployment.yaml的文件,自然触发FileNotFoundError报错。

修复方案

两种可行修复方式如下:

  • 方案1(官方推荐,无注入风险):将命令拆分为独立元素组成的列表传参
import subprocess

# 按空格拆分命令为单独列表项
command = ["kubectl", "apply", "-f", "deployment.yaml"]
check_output = subprocess.check_output(command)
# 命令返回结果默认是bytes类型,转UTF-8字符串方便查看
print(check_output.decode("utf-8"))
  • 方案2(仅适合无用户可控参数的场景):添加shell=True参数,让系统通过shell层自动解析命令字符串
import subprocess

command = 'kubectl apply -f deployment.yaml'
# 新增shell=True参数
check_output = subprocess.check_output(command, shell=True)
print(check_output.decode("utf-8"))
额外注意事项

修复后如果仍报错,需要核对两个前提条件:

  • 执行脚本的环境已经正确安装kubectl,且kubectl所在路径已加入系统PATH变量
  • 脚本执行的当前工作目录下存在deployment.yaml文件,或者在命令中填写该文件的绝对路径

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 01:39:00