【发布时间】:2020-01-21 19:03:54
【问题描述】:
我们有一个包含 Python 项目的私有存储库,该项目由 setuptools 在 CI/CD 服务器上构建,然后将轮子工件作为版本推送回 Github。这个过程效果很好,但是将生成的轮子返回到需要它作为依赖项的其他构建过程中似乎并不容易。
我们最初的过程是使用 git 子模块,但是轮子格式更好地自包含,并且使用项目不必担心相对路径,因为轮子直接安装到站点包中。
在任何消耗性项目中拉动和安装轮子是最大的问题。将轮子的 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
如果在私人浏览器窗口中跟随 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
谢谢
斯图尔特
【问题讨论】:
-
您必须对拉取进行身份验证。
-
谢谢@dan1st。看起来 pip 允许身份验证的唯一方法是来自 user:pass (github.com/pypa/pip/issues/51)。还看了pip源码看看有没有token认证的后门,貌似没有。
-
在任何情况下,您都可以使用 PAT 代替密码。
-
嗯,我什至尝试了 curl,但没有成功:
curl -H "Authorization: token ####" https://github.com/<CompanyName>/<ProjectName>/releases/download/v2.0.0/<ProjectName>-2.0-py3-none-any.whl这不是通过 API,而是直接到工件下载链接 -
我也有这个问题,到目前为止没有任何建议可行。有新想法的人吗?我创建了一个 PAT,但没有看到
repo:privateperms 的选项,仅适用于公共。使用 PAT,我可以 说服 pip 下载源代码,但 不能 将其下载到轮子上。我已经在浏览器中测试了滚轮 URL 是否正确。这有效:pip install git+https://${GITHUB_PAT}@github.com/<ORG_NAME>/<REPO_NAME>.git@v0.1.0但这不起作用:pip install https://${GITHUB_PAT}@github.com/<ORG_NAME>/<REPO_NAME>/releases/download/v0.1.0/<PACKAGE_NAME>-0.1.0-py2.py3-none-any.whl
标签: github pip github-release