2

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

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

在任何消费项目中拉动和安装轮子是最大的问题。将轮子的 url 添加到requirements.txtgets 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 

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

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

如何下载 GitHub 版本的二进制文件?

来自私人 github repo 的 pip install wheel 版本

谢谢

斯图尔特

4

1 回答 1

1

有一种方便的方法可以使用 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 发行版的工具都支持它

于 2020-04-05T16:39:17.520 回答