我们有一个私人仓库,其中包含一个由CI / CD服务器上的setuptools构建的Python项目,然后将车轮工件作为发行版推回到Github。这个过程很好用,但是将生成的轮子放回需要依赖关系的其他构建过程中似乎并不容易。
我们最初的过程是使用git子模块,但是wheel格式的自包含性要好得多,并且消耗项目无需担心相对路径,因为wheel直接安装在站点包中。
最大的问题来自于在任何耗能的项目中拔出并安装轮子。将车轮的网址添加到requirements.txt
会导致尝试拉动车轮,但随后失败,并显示以下内容:
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
谢谢
斯图尔特
答案 0 :(得分: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发行版在其工具中都支持它