Windows实例CodeDeploy执行Python钩子报Exec format错误如何解决
错误原因
Errno::ENOEXEC 格式执行错误是因为Windows环境下的CodeDeploy代理无法直接识别.py后缀脚本的默认执行程序,会尝试直接执行文件本身而非调用Python解释器,触发格式不兼容报错。
解决方案
可以选择以下任意一种方式修复:
方案1:给Python脚本添加shebang声明
在verify_deployment.py的第一行添加解释器声明,CodeDeploy的Windows代理可识别该声明自动调用对应解释器:
#!python print("hello")
如果Python没有添加到系统PATH,可替换为Python可执行文件的全路径,示例:
#!C:\Python311\python.exe print("hello")
方案2:修改appspec.yml显式指定解释器执行
直接在生命周期钩子配置中调用Python解释器执行脚本,无需修改脚本内容,两种配置可选:
调用cmd执行
ValidateService: - location: cmd.exe args: - /c - python scripts\verify_deployment.py timeout: 900
调用PowerShell执行
ValidateService: - location: powershell.exe args: - -ExecutionPolicy - Bypass - -Command - python scripts\verify_deployment.py timeout: 900
额外检查项
- 确认目标Windows实例上Python已正确安装,且安装路径添加到系统级PATH环境变量(CodeDeploy代理默认以系统账号运行,无法读取用户级PATH配置)。
- 确认部署包中
scripts/verify_deployment.py文件权限正常,系统账号拥有读取权限。 - 若使用直接指定
.py文件作为location的配置,需确认Windows系统.py后缀的默认打开程序为Python解释器,而非记事本、IDE等其他程序。
内容的提问来源于stack exchange,提问作者CK__
相关产品推荐
相关产品推荐

