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

使用PyGithub调用get_projects()获取GitHub仓库项目遇问题求助

问题排查与解决

核心问题:新旧GitHub Projects API不兼容

你浏览器里创建的是新版Projects v2(当前GitHub默认创建的项目类型),但PyGithub 1.58.1的repo.get_projects()调用的是已废弃的经典项目(v1)API——这两套系统完全不互通:

  • 旧v1 API已被GitHub淘汰,因此调用创建接口会返回410错误,哪怕仓库里实际存在新版项目
  • repo.has_projects仅对应经典项目的启用状态,和新版项目无关,所以它返回True不代表新版项目能通过旧API访问

解决办法

  1. 确认项目类型:打开仓库的Projects页面,若看不到"Classic"标识,说明你创建的是新版Projects v2。
  2. 升级PyGithub并换用新版API方法:
    • 将PyGithub升级到最新稳定版(至少1.59以上,旧版本不支持v2项目)
    • 替换代码中的方法:用repo.get_repository_projects()获取新版项目,代替原来的get_projects()
    • 创建新版项目使用repo.create_repository_project(name="你的项目名")
  3. 核对PAT权限:确保你的PAT勾选了projects权限(在PAT创建页的repo分类下找到projects选项,或单独的projects权限组)——新版v2项目需要明确的projects:write权限才能创建。
  4. curl测试用新版端点:如果要验证接口,需调用v2的API:
    # 获取仓库新版项目列表
    curl -H "Authorization: token 你的PAT" https://api.github.com/repos/用户名/仓库名/projects_v2
    # 创建新版项目
    curl -X POST -H "Authorization: token 你的PAT" -H "Content-Type: application/json" https://api.github.com/repos/用户名/仓库名/projects_v2 -d '{"name": "测试项目"}'
    

补充说明

如果确实需要使用经典项目,需前往仓库Settings > Features里开启"Classic Projects",但GitHub已不再推荐使用经典项目,建议直接迁移到新版v2。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 05:03:10