pip install from Azure DevOps Python Artifacts feed not working
As a workaround:
Looks like you're using option2 from the document to do the install. I happen to see one similar issue which indicates this error message could have something to do with pip.ini
(windows) or pip.conf
(linux/mac), so I think you can try another approach to avoid something wrong with those configurations.
You can run pip install artifacts-keyring --pre
and then run
pip install packageName --index-url https://pkgs.dev.azure.com/xxx/xxx/_packaging/xxx/pypi/simple/ -vvv --no-deps
You would meet something like this when running command pip install artifacts-keyring --pre
:
After the login-in passes, you would get the package you need if it do exist in your feed.
My issue was that I had not installed artifacts-keyring. After that I could see VS Code authenticating to the feed and installing the package.
I also needed to upgrade pip (needs to be above > 19.2) with the following command:
python -m pip install --upgrade pip
The fix
Do one of the following:
Remove the
VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
environment variable (not very useful, not recommended).Add an extra
endpoint
to theVSS_NUGET_EXTERNAL_FEED_ENDPOINTS
environment variable. E.g.,
{"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/", ...}]}
We have a script which sets up these endpoints, so this turns out to be a simple fix.
The cause
It turns out that if you have used artifacts-credprovider to set up another feed, in our case, a NuGet feed with another endpoint, the VSS_NUGET_EXTERNAL_FEED_ENDPOINTS
environment variable stores only that feed URL inside the key endpoint
. artifacts-keyring will still read that environment variable even if the endpoint
doesn't exist, which causes authentication problem. The -vvv
log doesn't tell you anything about authentication and it won't attempt to authenticate using another method.