如何从经过私人身份验证的 Artifactory PyPI 存储库中提取 Python 包?

How do I pull a Python package from private authenticated Artifactory PyPI repository?

我正在尝试 pippipenv 安装一个 Python 包我推送到我的组织托管的私有 PyPI 存储库在 JFrog Artifactory 上。

Artifactory documentation http://<username>:<password>@hostname... 应该可以。我已经在 Artifact Repository Browser.[=16] 的 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"
  } ]
}

尝试将 --index 替换为 --index-url - 这将适用于 public PyPi 存储库以及 PyPi 兼容的替代方案,例如 CloudRepo(我的公司的产品)。

如果这不起作用,请尝试更新您的 pip 版本并使用 --index-url 重试。

这似乎是 Artifactory 的暂时性问题。当我 运行 原始问题中的所有代码时,我获得了成功 - 不要求 username/password、curl returns 结果,安装工作。与他们的支持团队中的某个人取得联系可能有所帮助。