来自私人 github 存储库的 Pip install wheel
Posted
技术标签:
【中文标题】来自私人 github 存储库的 Pip install wheel【英文标题】:Pip install wheel from private github repo 【发布时间】: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:private
perms 的选项,仅适用于公共。使用 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
【参考方案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
我上次检查时,curl
、wget
和 git
(以及其他)默认情况下会尊重此文件来验证 HTTP(S) 请求。虽然我不确定每种配置都是这种情况,但您可能会惊讶于对~/.netrc
的支持在不同工具中的普遍存在。这是一个 Unixsm,我不知道 MacOS 或 Windows 是否支持它,但大多数 Linux 发行版的工具都支持它
【讨论】:
以上是关于来自私人 github 存储库的 Pip install wheel的主要内容,如果未能解决你的问题,请参考以下文章