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

如何在GitHub的两个仓库间实现Python包的认证并通过GitHub Actions安装该包

如何在GitHub的两个仓库间实现Python包的认证并通过GitHub Actions安装该包

嘿,我来帮你搞定这个问题!你本地用Deploy Key能顺利安装私有Python包,但在GitHub Actions里确实需要额外配置一下认证,下面给你两种实用的方案,你可以根据自己的需求选:

方案一:用SSH Deploy Key在Actions中认证

这个方案和你本地的操作逻辑一致,只是需要把私钥配置到Actions的 secrets 里:

  • 如果你还没生成SSH密钥对,先在本地生成一个(跳过密码设置,因为Actions里没法手动输入):
    ssh-keygen -t ed25519 -C "github-actions-deploy@your-project.com"
    
  • 把公钥文件(id_ed25519.pub)的内容添加到私有utility仓库的「Deploy Keys」中,只需要只读权限就够了,不用勾选「Allow write access」,这样更安全。
  • 把私钥文件(id_ed25519)的内容添加到要运行Actions的目标仓库的「Secrets and variables」→「Actions」→「New repository secret」,命名为PRIVATE_REPO_SSH_KEY。
  • 修改你的requirements.txt,把私有包的路径改成SSH格式:
    # 替换成你的仓库路径、分支名和包名
    git+ssh://git@github.com/your-username/your-private-utility-repo.git@main#egg=your-package-name
    
    这里@main是你要安装的分支/标签,#egg=后面的名字要和私有仓库里setup.py或pyproject.toml中定义的包名一致。
  • 最后在你的GitHub Actions workflow文件中添加SSH配置步骤:
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: 配置Python环境
            uses: actions/setup-python@v5
            with:
              python-version: '3.11' # 换成你需要的版本
          - name: 配置SSH访问私有仓库
            run: |
              mkdir -p ~/.ssh/
              echo "${{ secrets.PRIVATE_REPO_SSH_KEY }}" > ~/.ssh/id_ed25519
              chmod 600 ~/.ssh/id_ed25519
              ssh-keyscan github.com >> ~/.ssh/known_hosts
          - name: 安装依赖
            run: |
              python -m pip install --upgrade pip
              pip install -r requirements.txt
    
    这个步骤会帮你把私钥放到Actions runner的正确位置,设置安全权限,并提前添加GitHub的公钥到信任列表,避免首次连接的确认提示。

方案二:用GitHub Personal Access Token(PAT)认证

如果你觉得SSH配置有点麻烦,这个方案更简洁,不用处理密钥权限和known_hosts:

  • 生成一个PAT:进入GitHub的「Settings」→「Developer settings」→「Personal access tokens」→「Tokens (classic)」,生成时勾选repo权限(用于访问私有仓库),复制好这个token(只显示一次,别弄丢了)。
  • 把这个PAT添加到目标仓库的「Secrets and variables」→「Actions」→「New repository secret」,命名为PRIVATE_REPO_PAT。
  • 你可以直接在Actions的安装步骤里指定私有包的HTTPS路径,用PAT替换用户名:
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v4
          - name: 配置Python环境
            uses: actions/setup-python@v5
            with:
              python-version: '3.11'
          - name: 安装依赖(含私有包)
            run: |
              python -m pip install --upgrade pip
              # 替换成你的仓库路径、分支名和包名
              pip install git+https://${{ secrets.PRIVATE_REPO_PAT }}@github.com/your-username/your-private-utility-repo.git@main#egg=your-package-name
              pip install -r requirements.txt
    
    或者你想在requirements.txt里保留占位符(比如git+https://__PAT__@github.com/...),可以先替换再安装:
    - name: 替换requirements.txt中的PAT占位符
      run: sed -i 's/__PAT__/${{ secrets.PRIVATE_REPO_PAT }}/' requirements.txt
    - name: 安装依赖
      run: |
        python -m pip install --upgrade pip
        pip install -r requirements.txt
    
    这个方案的优势是一个PAT可以访问多个私有仓库,而Deploy Key只能对应单个仓库,适合你有多个私有依赖的场景。

一些注意事项

  • 确保Actions runner能正常访问GitHub(默认情况下是没问题的)。
  • 如果私有仓库属于组织,仓库路径换成github.com/your-org/your-repo.git即可。
  • 尽量指定具体的分支或标签(比如@v1.0.0),避免每次安装最新的不稳定版本。

备注:内容来源于stack exchange,提问作者Thomas Segato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 15:59:38