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

GitHub Actions Runner中Python subprocess无法识别GH CLI的问题求助

GitHub Actions中Python subprocess无法找到GH CLI的解决方法

你遇到的FileNotFoundError本质是Python的subprocess模块在当前环境的PATH里找不到gh命令,下面给你几个针对性的解决思路:

1. 先验证GH CLI在runner环境中是否可用

首先在你的工作流里加一步,确认gh是否已经安装:

- name: Check GH CLI status
  run: gh --version

如果这一步报错,说明当前runner没有预装GH CLI,你需要手动安装它,在你的工作流中添加安装步骤:

- name: Install GitHub CLI
  run: |
    curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
    sudo apt update && sudo apt install gh -y

2. 解决subprocess找不到gh的路径问题

如果gh --version能正常执行,但Python脚本还是找不到,那是因为subprocess默认的环境变量PATH可能和shell环境不一致,你可以用以下几种方法解决:

方法一:使用gh的完整路径调用

先在runner中执行which gh找到它的完整路径(比如官方ubuntu runner里通常是/usr/bin/gh),然后修改Python代码:

body = subprocess.check_output(["/usr/bin/gh", "pr", "view", url])

方法二:传递完整的环境变量给subprocess

Python的os.environ.copy()可以获取当前shell的环境变量,把它传给subprocess就能保证PATH一致:

import os
import subprocess

url = os.getenv("INPUT_PRURL")
env = os.environ.copy()
body = subprocess.check_output(["gh", "pr", "view", url], env=env)

方法三:使用shell=True(注意安全风险)

如果你的url是可信的(比如来自GitHub事件,没有用户可控的恶意输入),可以开启shell=True让subprocess通过shell执行命令,这样会自动使用shell的PATH:

body = subprocess.check_output(f"gh pr view {url}", shell=True)

3. 额外注意事项

  • 你已经在工作流中设置了GH_TOKEN环境变量,这一步是正确的,确保GH CLI有足够权限访问PR内容;
  • 如果你使用的是GitHub官方的ubuntu-latest runner,GH CLI是默认预装的,所以优先检查PATH问题而不是重新安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 22:02:50