从私人 github 回购点安装轮子

Pip install wheel from private github repo

我们有一个私人仓库,其中包含一个 Python 项目,该项目由 setuptools 在 CI/CD 服务器上构建,然后 wheel 工件作为一个版本被推回到 Github .这个过程效果很好,但是将生成的轮子返回到其他需要它作为依赖项的构建过程似乎并不那么容易。

我们最初的过程是使用 git 子模块,但是 wheel 格式是自包含的,并且消费项目不必担心相对路径,因为 wheel 直接安装到站点包中.

最大的问题是在任何消耗项目中拉动和安装轮子。将轮子的 url 添加到 requirements.txt 得到 pip 以尝试拉动轮子,但随后失败并显示以下内容:

Could not install requirement <ProjectName>==2.0 from
https://github.com/<CompanyName>/<ProjectName>/releases/download/v2.0.0/<ProjectName>-2.0-py3-none-any.whl (from -r 
requirements.txt (line 27)) because of HTTP error 404 Client Error: Not Found for url 

如果在私人浏览器 window 中跟随 url,也会返回 404 错误。如果在已经登录到 GitHub 的浏览器上跟随 url,则返回滚轮。检查获取轮子的请求显示浏览器发送了一个 cookie,让 GitHub 知道这个轮子是我的,但以编程方式发送 cookie 似乎不是一个好主意。

以下问题都涉及同一主题。第一个问题的公认答案似乎不是很优雅 - 希望有更好的方法!

How do I download binary files of a GitHub release?

pip install wheel version from private github repo

谢谢

斯图尔特

有一种方便的方法可以使用 GitHub 访问令牌对拉取进行身份验证,该令牌可以非常透明地跨许多使用 HTTP 的不同工具运行。这是大多数系统上的 ~/.netrc 文件。尝试以下操作:

$ touch ~/.netrc && chmod 600 ~/.netrc && cat >> ~/.netrc << 'EOF'
machine github.com
login your_githubu_sername
password your_github_api_token
EOF

我最后检查过,curlwgetgit(以及其他)默认情况下将尊重此文件以验证 HTTP(S) 请求。虽然我不确定在每个配置中都是这种情况,但您可能会惊讶于 ~/.netrc 在不同工具中的支持是多么普遍。这是一个 Unixsm,我不知道 MacOS 或 Windows 是否支持它,但大多数 Linux 发行版的工具都支持它