python - 如何通过 CLI 从 Azure Artifact feed 安装私有(private) python 包

标签 python azure azure-devops command-line-interface azure-artifacts

我已经在 Azure Artifacts 中设置了 pypi feed,但我似乎无法通过 CLI 进行身份验证以便能够在本地安装 python 包。我希望能够运行 pip install 并提供存储库 URL,但我无法通过登录/验证步骤。

我已经按照 MS 的建议安装了 keyringartifacts-keyring,但是每当我尝试 pip install 时,都会收到输入用户和密码的提示,如下所示:

C:\Users\user-name-here> pip install -r "url-to-feed-here" package-name
User for pkgs.dev.azure.com: <my MS/DevOps username>
Password: <my MS/DevOps password>
WARNING: 401 Error, Credentials not correct for feed-url-here
ERROR: 401 Client Error: Unauthorized for url: feed-url-here

总是无法进行身份验证,并且在通过 ssh 的远程服务器上,它甚至不表明凭据不正确,只是返回了 401 http 消息。

对我来说没有意义的是,我使用完全相同的用户/密码组合登录 DevOps 并创建提要,但我无法使用这些凭据从中提取包?这是否意味着 MS 必须设置一组不同的凭据才能使用它?

我看到的所有其他问题要么是关于使用 Pipelines、NuGet,要么是关于使用 Pipelines、NuGet 或其他一些方法,而不是直接的 cli 命令,这没有帮助,因为我想使用 CLI 并可能用简单的脚本来编写它稍后。

最佳答案

How to install private python package from Azure Artifact feed via CLI

根据文档Get started with Python packages in Azure Artifacts ,它提供了两种连接到 feed 来推送或拉取 Python 包的主要方法:

  • 安装并使用 Python Credential Provider (artifacts-keyring) (预览版),它为您设置身份验证。
  • 手动设置 pip.ini/pip.conf 的推送凭证,或者 .pypirc 用于通过个人访问 token (PAT) 进行拉取。

看起来您正在使用文档中的选项 1 来进行安装。如果我使用安装命令行 pip install -r "url-to-feed-here"package-name,我碰巧会遇到与您相同的错误。

但是,如果我使用文档中的命令行,它就可以正常工作:

pip install <package-name> --index-url https://pkgs.dev.azure.com/<your-organization-name>/_packaging/<your-feed-name>/pypi/simple

注意:

The Python Credential Provider lets the pip and twine commands authenticate by sending you through an authentication flow in your web browser.

我的测试结果:

enter image description here

因此,请尝试使用此命令行通过 CLI 从 Azure Artifact feed 安装私有(private) python 包。

此外,您也可以尝试通过第二种方式安装私有(private)python包。

关于python - 如何通过 CLI 从 Azure Artifact feed 安装私有(private) python 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65255208/

相关文章:

git - 如何在 VSTS/TFS 构建中检索 Git 提交 ID 和消息?

azure - 从 Azure DevOps 导出测试结果

python - 递归错误: I'm looking for a way to reduce the number of the loop

azure - 证书管理器 - 我的证书的有效期和续订过程

python - 网络驱动程序异常 : Message: Service/usr/lib/chromium-browser/chromedriver unexpectedly exited on Raspberry-Pi with ChromeDriver and Selenium

Azure 生命周期管理规则

Azure KQL : convert date in string format "20210820122039" to datetime in azure KQL

visual-studio-2015 - Azure DevOps Build - 发布时不会在 bin 文件夹中创建 .compiled 文件

python - 如何使用 Pyglet 播放音频(在生成器循环中)?

Python - 为什么这会进行 8 次递归调用?