如何从经过身份验证的私有 Artifactory PyPI 存储库中提取 Python 包?
Posted
技术标签:
【中文标题】如何从经过身份验证的私有 Artifactory PyPI 存储库中提取 Python 包?【英文标题】:How do I pull a Python package from private authenticated Artifactory PyPI repository? 【发布时间】:2018-10-07 12:54:43 【问题描述】:我正在尝试 pip 或 pipenv 安装一个 Python 包,该包已推送到我所在组织在 JFrog Artifactory 上托管的私有 PyPI 存储库。
从Artifactory documentation http://<username>:<password>@hostname...
应该可以工作。我已经在 Artifact Repository Browser 的 Set Me Up 工具中尝试了我的登录密码以及从中派生的密码。
以下命令要求输入用户名和密码,但我不想从命令行输入它们,因为它们将通过环境变量传递到 CI 管道中。如果我在提示符下输入用户名和密码,则可以正常工作。
$ pip search package-name --index https://user:password@organisation.jfrog.io/organisation/api/pypi/pypi/simple
User for organisation.jfrog.io:
$ pip install --extra-index-url https://user:password@organisation.jfrog.io/organisation/api/pypi/pypi/simple package-name
Looking in indexes: https://pypi.org/simple, https://user:password@organisation.jfrog.io/organisation/api/pypi/pypi/simple
Collecting package-name
User for organisation.jfrog.io:
使用curl
尝试HTTP 身份验证也不起作用。
$ curl -i https://user:password@organisation.jfrog.io/organisation/api/pypi/pypi/simple/
HTTP/1.1 401 Unauthorized
Content-Type: application/json;charset=ISO-8859-1
Date: Thu, 26 Apr 2018 18:03:39 GMT
Server: Artifactory/5.10.1
WWW-Authenticate: Basic realm="Artifactory Realm"
X-Artifactory-Id: aolshared3a-organisation
X-Node: nginx2a.prod-euw1
Content-Length: 91
Cache-Control: proxy-revalidate
Connection: Keep-Alive
Set-Cookie: BCSI-CS-a61288137a7d35f7=1; Path=/
"errors" : [
"status" : 401,
"message" : "Authentication is required"
]
【问题讨论】:
【参考方案1】:尝试将 --index 替换为 --index-url - 这适用于公共 PyPi 存储库以及符合 PyPi 的替代方案,例如 CloudRepo(我公司的产品)。
如果这不起作用,请尝试更新您的 pip 版本并使用 --index-url 重试。
【讨论】:
谢谢,但我已经在使用最新版本的 pip (10.0.1) 并且我得到“没有这样的选项:--index-url”。问题似乎现在已经解决了 - 请参阅我自己的答案。【参考方案2】:这似乎是 Artifactory 的临时问题。当我运行原始问题中的所有代码时,我得到了成功 - 不询问用户名/密码,curl
返回结果,安装工作。与其支持团队中的某个人取得联系可能会有所帮助。
【讨论】:
以上是关于如何从经过身份验证的私有 Artifactory PyPI 存储库中提取 Python 包?的主要内容,如果未能解决你的问题,请参考以下文章
JFrog Artifactory 间歇性拒绝身份验证,403 被禁止