如何从私有GitHub Release Assets使用pip install安装包?
从GitHub Release Assets的tar.gz包执行pip安装的解决方案
核心结论
完全可以从GitHub Release Assets的tar.gz包执行pip install,关键是确保包的合规性和私有仓库的认证权限。
步骤1:确保Release Assets中的tar.gz是合规Python包
- 打包前必须先生成protobuf类文件,再用Python官方打包工具(
python -m build或setup.py sdist)构建包,不能直接压缩源码目录。这样生成的tar.gz会包含所有必要文件(包括生成的protobuf类),符合pip的安装规范。 - 验证包结构:解压tar.gz后,应包含包目录、
pyproject.toml/setup.py、元数据文件(如PKG-INFO),确保pip能识别为可安装包。
步骤2:获取Release Assets的直接下载URL
打开对应Release页面,找到上传的tar.gz资产,右键复制直接下载链接(不是Release页面链接,是点击后触发下载的URL)。
步骤3:处理私有仓库的认证
因为仓库是私有的,pip访问资产URL需要GitHub权限,推荐两种方式:
- 方式1:URL嵌入个人访问令牌(PAT)
生成一个拥有repo权限的GitHub PAT,将其嵌入下载URL,格式为:https://<你的PAT>@github.com/<用户名>/<仓库名>/releases/download/<版本标签>/<包文件名>.tar.gz - 方式2:使用.netrc文件(无需每次写令牌)
在用户目录下创建.netrc文件,内容如下(替换占位符):
pip会自动读取该文件完成认证。machine github.com login <你的GitHub用户名> password <你的PAT>
步骤4:执行pip安装命令
- 用嵌入PAT的URL安装:
pip install https://<你的PAT>@github.com/<用户名>/<仓库名>/releases/download/<版本标签>/<包文件名>.tar.gz - 用.netrc认证时,直接使用原始下载URL:
pip install https://github.com/<用户名>/<仓库名>/releases/download/<版本标签>/<包文件名>.tar.gz
步骤5:验证安装有效性
安装完成后,可通过以下方式确认:
- 执行
pip show <你的包名>,查看安装的版本和路径 - 在Python环境中导入生成的protobuf类,确认能正常加载
GitHub Actions打包示例(确保包含protobuf类)
在Actions的yaml配置中,需先生成protobuf类再构建包,示例片段:
steps: - uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v5 with: python-version: '3.11' - name: Install dependencies run: | pip install --upgrade pip pip install protobuf build - name: Generate protobuf classes run: protoc --python_out=. your_proto_file.proto - name: Build package run: python -m build - name: Upload to Release Assets uses: softprops/action-gh-release@v2 with: files: dist/*.tar.gz env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
内容的提问来源于stack exchange,提问作者WZH
相关产品推荐
相关产品推荐

