[英]pip install from Azure DevOps Python Artifacts feed not working
当我尝试从我们的 Azure DevOps Artifacts 源安装包时,我收到错误消息:
Looking in indexes: https://pypi.org/simple, https://pkgs.dev.azure.com/company/company_Software/_packaging/PyPI/pypi/simple/
ERROR: Could not find a version that satisfies the requirement as-api (from versions: none)
ERROR: No matching distribution found for as-api
由于使用pip install -vvv
可能会产生机密信息,因此我无法在此处提供完整的日志。 请随时询问有关日志的任何具体问题。 与此同时,我可以看到有希望的消息,例如:
Found index url https://pkgs.dev.azure.com/company/company_Software/_packaging/PyPI/pypi/simple/
Getting credentials from keyring for https://pkgs.dev.azure.com/company/company_Software/_packaging/PyPI/pypi/simple/
还有一些有问题的消息?:
Status code 302 not in (200, 203, 300, 301)
Skipping link: not a file: ...
Given no hashes to check 0 links for project 'as-api': discarding no candidates
virtualenv .venv
.\.venv\Scripts\activate
python -m pip install -U pip
pip install keyring artifacts-keyring
pip install as-api
此链接用于生成发布包的管道以及安装包的建议方式。 我的方法现在是选项 1 和选项 2 的混合。注意使用 php.ini 文件来设置--index-url
和artifacts-keyring
包(使用--pre
安装对版本没有任何影响),所以它真的没有任何区别。 但是,我已经分别尝试了这两个选项,它不会产生浏览器,所以它给出了相同的结果。
系统详情:
pip list
Package Version
----------------- ----------
artifacts-keyring 0.2.8rc0
certifi 2019.11.28
chardet 3.0.4
configparser 4.0.2
entrypoints 0.3
idna 2.8
keyring 18.0.1
pip 19.3.1
pywin32-ctypes 0.2.0
requests 2.22.0
setuptools 42.0.2
urllib3 1.25.7
wheel 0.33.6
文件夹结构:
test
|-- test.py
|-- .venv
|-- pip.ini
|-- ... other virtualenv folders and files
点子.ini:
[global]
extra-index-url = https://pkgs.dev.azure.com/company/company_Software/_packaging/PyPI/pypi/simple/
使用干净的笔记本电脑实际上适用于上述复制细节。 公司的其他电脑也有同样的问题,所以我们的一些设置与认证冲突。
如果我们使用管道(请参阅此链接)安装as-api
包,它可以工作,所以我怀疑这是一个身份验证问题,但在任何文档中都没有提到。
使用https://username:password@ ... 不会出现任何身份验证错误,即使用户名和密码错误。
使用正确的用户名但密码中有符号会触发交互模式以输入用户名和密码。 但是,这会出现此错误: WARNING: 401 Error, Credentials not correct for https://pkgs.dev.azure.com/company/company_Software/_packaging/PyPI/pypi/simple/as-api/
请注意,我是所有者工件源和团队已添加为权限选项卡中的所有者。
作为解决方法:
看起来您正在使用文档中的option2进行安装。 我碰巧看到一个类似的问题,它表明此错误消息可能与pip.ini
(windows) 或pip.conf
(linux/mac) 有关,因此我认为您可以尝试另一种方法来避免这些配置出现问题。
您可以运行pip install artifacts-keyring --pre
然后运行
pip install packageName --index-url https://pkgs.dev.azure.com/xxx/xxx/_packaging/xxx/pypi/simple/ -vvv --no-deps
运行命令pip install artifacts-keyring --pre
时,您会遇到类似的pip install artifacts-keyring --pre
:
登录通过后,如果您的提要中确实存在您需要的包,您将获得它。
我的问题是我没有安装 artifacts-keyring。 之后,我可以看到 VS Code 对提要进行身份验证并安装包。
我还需要使用以下命令升级 pip(需要高于 > 19.2):
python -m pip install --upgrade pip
执行以下操作之一:
删除VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
环境变量(不是很有用,不推荐)。
向VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
环境变量添加一个额外的endpoint
。 例如,
{"endpointCredentials": [{"endpoint":"https://pkgs.dev.azure.com/company/_packaging/NuGetFeed/nuget/v3/index.json", ...},{"endpoint":"https://pkgs.dev.azure.com/company/company_Software/_packaging/PyPI/pypi/simple/", ...}]}
我们有一个设置这些端点的脚本,所以这是一个简单的修复。
事实证明,如果您使用artifacts-credprovider设置另一个提要,在我们的例子中,是一个带有另一个端点的 NuGet 提要, VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
环境变量仅存储关键endpoint
内的提要 URL。 即使endpoint
不存在, artifacts-keyring仍会读取该环境变量,这会导致身份验证问题。 -vvv
日志不会告诉您有关身份验证的任何信息,也不会尝试使用其他方法进行身份验证。
假设您的 Azure DevOps 工件是私有的并且您有PAT ,则可以通过以下两种方式从工件安装包
pip install https://<your-feed-name>:<your-PAT-key>@pkgs.dev.azure.com/<your-organization-name>/<your-project-name>/_packaging/<your-feed-name>/pypi/simple/ Your-Package-Name==x.x.x
注意:所有名称(例如:提要、项目)必须遵循 HTTPS URL 约定。了解 URL 的简单(实际上正确)方法是转到 Artifacts --> 选择您的工件提要 --> 连接到提要 - -> PIP --> 在这里您将获得正确的 URL。 此外,在 URL 中的位置都使用一些提要名称
requirements.txt
(这将理想地用于 prod 或 CI/CD 管道)并自动化该过程: 请注意,它需要一些字符串/URL 操作。 以下列方式在您的requirements.txt
中添加相应的行/URL:
simple
的URL之后一切都要改,修改后的URL——https://<your-feed-name>:<your-PAT-key>@pkgs.dev.azure.com/<your-organization-name>/<your-project-name>/_packaging/<your-feed-name>/pypi/download/<yourpackagename>/<package version>/Your-Package-Name.whl
#assuming your package is a .whl file
simple
改download
; 那么无论你的包名是什么,无论它是否包含“-”或“_”或大写字母,所有内容都将被删除并转换为小写。.whl
文件的名称。作为@user:10097045 答案的更新
您必须在选项 1 中的带有路径的 URL 前面添加 --extra-index-url= ,否则 pip 将无法找到目录
否则答案非常有帮助,您只需得到没有该定义的 404
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.