uv
uv copied to clipboard
uv pip install from private extra index url get 401 Unauthorized
Summary
Hey guys, I'm really surprised to have that bug since it occured a year ago and from the discussion I saw, a fix has been implemented but I am still getting this issue. I just started using uv couple of weeks ago and I am doing some deep tests to be sure it works well and to replace poetry by uv. Here is the thing: I am trying to install private package in private azure pypi but I am getting the famous 401 unauthorized. Here is the full verbose anonymized:
> uv pip install my-package==17.0.2 --extra-index-url https://username:[email protected]/pypi-server --verbose
DEBUG uv 0.7.2 (481d05d8d 2025-04-30)
DEBUG Searching for default Python interpreter in virtual environments
DEBUG Found `cpython-3.10.4-windows-x86_64-none` at `C:\Users\user\Documents\Project\uvPip_demo\.venv\Scripts\python.exe` (virtual environment)
DEBUG Using Python 3.10.4 environment at: .venv
DEBUG Acquired lock for `.venv`
DEBUG At least one requirement is not satisfied: my-package==17.0.2
DEBUG Using request timeout of 30s
DEBUG Solving with installed Python version: 3.10.4
DEBUG Solving with target Python version: >=3.10.4
DEBUG Adding direct dependency: my-package>=17.0.2, <17.0.2+
DEBUG Acquired lock for `C:\Users\user\AppData\Local\uv\cache\simple-v15\index\some-index\my-package.lock`
DEBUG Found stale response for: https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
DEBUG Sending revalidation request for: https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
DEBUG Found modified response for: https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
DEBUG Released lock at `C:\Users\user\AppData\Local\uv\cache\simple-v15\index\some-index\my-package.lock`
DEBUG Searching for a compatible version of my-package (>=17.0.2, <17.0.2+)
DEBUG Selecting: my-package==17.0.2 [compatible] (my-package-17.0.2-py3-none-any.whl)
DEBUG Acquired lock for `C:\Users\user\AppData\Local\uv\cache\wheels-v5\index\some-index\my-package\my-package-17.0.2-py3-none-any.lock`
DEBUG No cache entry for: http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my-package-17.0.2-py3-none-any.whl
WARN Range requests not supported for my-package-17.0.2-py3-none-any.whl; streaming wheel
DEBUG No cache entry for: http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my-package-17.0.2-py3-none-any.whl
DEBUG No netrc file found
DEBUG Released lock at `C:\Users\user\AppData\Local\uv\cache\wheels-v5\index\some-index\my-package\my-package-17.0.2-py3-none-any.lock`
DEBUG Released lock at `C:\Users\user\Documents\Project\uvPip_demo\.venv\.lock`
error: Failed to fetch: `http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my-package-17.0.2-py3-none-any.whl`
Caused by: HTTP status client error (401 Unauthorized) for url (https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my-package-17.0.2-py3-none-any.whl)
Platform
windows 11 x64
Version
0.7.2
Python version
3.10.4
Thanks for sharing. Are your credentials correct or do you think that Azure is incorrectly returning a 401? Do you expect this package to be found in Azure?
If the 401 is because the credentials are incorrect, then it is expected behavior starting with 0.7.0 that uv will stop searching to avoid dependency confusion.
I forgot to mention but pip install --extra-index-url works with the exact same url and credentials. But when running uv pip install, I am getting this error.
If pip can find the package on another index, the 401 on your --extra-index-url will not prevent it from installing the package. uv is now stricter than this.
So what should be done ? What does uv need more than the extra index + credentials to be able to install the package ?
Would you mind verifying the credentials are correct by installing a package from that extra index? To ensure it's not being installed from PyPI, you can use uv pip install --default-index or pip install --index-url.
Using pip it works I am able to install the package using the credentials, I even did it manually by accessing the url of the package, then filling ogin popup with credentials and it worked, packages installed/downloaded
Ok, thanks for trying it out. The question is why were you encountering a 401 before? Do you still get stuck on the 401 if you install that same package with uv pip install specifying your index as --extra-index-url? If so, could you share the trace-level logs (-vv)?
So here is a sum up:
- Using pip install --extra-index-url works fine, the package is installed well from our private repo
- Using the url for manual download works
- Using uv pip install with extra-index-url to install the package from our private repo fails with a 401 error using the exact same url than for the pip install with same credentials
From your initial logs, it looks like you are hosting your own private index on Azure instead of using Azure Artifact. Is that correct? I did try unsuccessfully to replicate on Azure Artifact just in case.
At this point I'm trying to understand why you seem to encounter a 401 with uv but not pip. From your initial logs, it looks like you're supplying the credentials in the URL. Is that correct?
To ensure that nothing has changed on the server side and to rule out other variables, I want to be sure that the following are true when run in succession on the same machine with the same credentials:
pip install your-package --index-url your-urlsucceeds.uv pip install your-package --default-index your-urlfails.
If these are both true, then to make progress I'll need the trace logs: uv pip install your-package --default-index your-url -vv.
I confirm both points are happening i.e.:
pip install your-package --index-url your-urlsucceeds.uv pip install your-package --default-index your-urlfails.
Here is now the uv pip install with -vv
>uv pip install my-password --default-index https://username:[email protected]/pypi-server -vv
uv pip install my-package --default-index https://username:[email protected]/pypi-server -vv
DEBUG uv 0.7.2 (481d05d8d 2025-04-30)
DEBUG Searching for default Python interpreter in virtual environments
TRACE Cached interpreter info for Python 3.10.4, skipping probing: .venv\Scripts\python.exe
DEBUG Found `cpython-3.10.4-windows-x86_64-none` at `C:\Users\myusername\Documents\Project\uvPip_demo\.venv\Scripts\python.exe` (virtual environment)
DEBUG Using Python 3.10.4 environment at: .venv
TRACE Checking lock for `.venv` at `.venv\.lock`
DEBUG Acquired lock for `.venv`
DEBUG At least one requirement is not satisfied: my-package
TRACE Caching credentials for https://username:[email protected]/pypi-server
DEBUG Using request timeout of 30s
DEBUG Solving with installed Python version: 3.10.4
DEBUG Solving with target Python version: >=3.10.4
TRACE Assigned packages:
TRACE Chose package for decision: root. remaining choices:
DEBUG Adding direct dependency: my-package*
TRACE Assigned packages: root==0a0.dev0
TRACE Chose package for decision: my-package. remaining choices:
TRACE Fetching metadata for my-package from https://username:[email protected]/pypi-server/my-package/
TRACE Checking lock for `C:\Users\myusername\AppData\Local\uv\cache\simple-v15\index\e626436b82ae0732\my-package.lock` at `C:\Users\myusername\AppData\Local\uv\cache\simple-v15\index\e626436b82ae0732\my-package.lock`
DEBUG Acquired lock for `C:\Users\myusername\AppData\Local\uv\cache\simple-v15\index\e626436b82ae0732\my-package.lock`
TRACE Cached request https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ is storable because its response has a heuristically cacheable status code 200
TRACE Could not determine freshness lifetime, assuming none exists
TRACE Cached request https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ has a cached response that does not allow staleness
TRACE Request https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ does not have a fresh cache because its age is 41 seconds, it is greater than the freshness lifetime of 0 seconds and stale cached responses are not allowed
DEBUG Found stale response for: https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
DEBUG Sending revalidation request for: https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
TRACE Handling request for https://username:****@my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ with authentication policy auto
TRACE Request for https://username:****@my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ already contains username and password
TRACE Updating cached credentials for https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ to Basic { username: Username(Some("username")), password: Some(****) }
TRACE Resource is modified because status is 200 and not 304
DEBUG Found modified response for: https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
TRACE Cached request https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ is storable because its response has a heuristically cacheable status code 200
DEBUG Released lock at `C:\Users\myusername\AppData\Local\uv\cache\simple-v15\index\e626436b82ae0732\my-package.lock`
TRACE Received package metadata for: my-package
TRACE Selecting candidate for my-package with range * with 30 remote versions
TRACE Found candidate for package my-package with range * after 1 steps: 18.0.1 version
TRACE Returning candidate for package my-package with range * after 1 steps
DEBUG Searching for a compatible version of my-package (*)
TRACE Selecting candidate for my-package with range * with 30 remote versions
TRACE Found candidate for package my-package with range * after 1 steps: 18.0.1 version
TRACE Returning candidate for package my-package with range * after 1 steps
DEBUG Selecting: my-package==18.0.1 [compatible] (my_package-18.0.1-py3-none-any.whl)
TRACE Checking lock for `C:\Users\myusername\AppData\Local\uv\cache\wheels-v5\index\e626436b82ae0732\my-package\my_package-18.0.1-py3-none-any.lock` at `C:\Users\myusername\AppData\Local\uv\cache\wheels-v5\index\e626436b82ae0732\my-package\my_package-18.0.1-py3-none-any.lock`
DEBUG Acquired lock for `C:\Users\myusername\AppData\Local\uv\cache\wheels-v5\index\e626436b82ae0732\my-package\my_package-18.0.1-py3-none-any.lock`
TRACE No cache entry exists for C:\Users\myusername\AppData\Local\uv\cache\wheels-v5\index\e626436b82ae0732\my-package\18.0.1-py3-none-any.msgpack
DEBUG No cache entry for: http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Sending fresh HEAD request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Handling request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl with authentication policy auto
TRACE Request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl is unauthenticated, checking cache
TRACE No credentials in cache for URL http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Attempting unauthenticated request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Considering retry of error: Error { kind: WrappedReqwestError(Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("my-azure-endpoint.northeurope.cloudapp.azure.com")), port: None, path: "/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl", query: None, fragment: None }, WrappedReqwestError(Reqwest(reqwest::Error { kind: Status(405), url: "https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl" }))) }
TRACE Cannot retry error: not an IO error
WARN Range requests not supported for my_package-18.0.1-py3-none-any.whl; streaming wheel
TRACE No cache entry exists for C:\Users\myusername\AppData\Local\uv\cache\wheels-v5\index\e626436b82ae0732\my-package\18.0.1-py3-none-any.msgpack
DEBUG No cache entry for: http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Sending fresh GET request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Handling request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl with authentication policy auto
TRACE Request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl is unauthenticated, checking cache
TRACE No credentials in cache for URL http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Attempting unauthenticated request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl
TRACE Request for http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl failed with 401 Unauthorized, checking for credentials
TRACE No credentials in cache for realm http://my-azure-endpoint.northeurope.cloudapp.azure.com
DEBUG No netrc file found
TRACE Considering retry of error: Error { kind: WrappedReqwestError(Url { scheme: "http", cannot_be_a_base: false, username: "", password: None, host: Some(Domain("my-azure-endpoint.northeurope.cloudapp.azure.com")), port: None, path: "/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl", query: None, fragment: None }, WrappedReqwestError(Reqwest(reqwest::Error { kind: Status(401), url: "https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl" }))) }
TRACE Cannot retry error: not an IO error
DEBUG Released lock at `C:\Users\myusername\AppData\Local\uv\cache\wheels-v5\index\e626436b82ae0732\my-package\my_package-18.0.1-py3-none-any.lock`
DEBUG Released lock at `C:\Users\myusername\Documents\Project\uvPip_demo\.venv\.lock`
error: Failed to fetch: `http://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl`
Caused by: HTTP status client error (401 Unauthorized) for url (https://my-azure-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl)```
It looks like we are caching the credentials for the https URL but then later making a request to an http URL (and not finding the credentials there). Something is wrong that we are using http. Is it possible your index is returning URLs with the http scheme? Do you see URLs like that in the pip install logs?
As a separate point, when uv makes a HEAD request it receives an HTTP 405 Method Not Allowed. At that point, it is an unauthenticated request, but if the server does not support HEAD requests that could also cause an issue even if the http issue is resolved.
Here is more info regarding the installation with pip:
> pip install my-package --index-url https://username:[email protected]/pypi-server -vv
Using pip 24.0 from C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\pip (python 3.10)
Non-user install because site-packages writeable
Created temporary directory: C:\Users\user\AppData\Local\Temp\pip-build-tracker-dubo8156
Initialized build tracking at C:\Users\user\AppData\Local\Temp\pip-build-tracker-dubo8156
Created build tracker: C:\Users\user\AppData\Local\Temp\pip-build-tracker-dubo8156
Entered build tracker: C:\Users\user\AppData\Local\Temp\pip-build-tracker-dubo8156
Created temporary directory: C:\Users\user\AppData\Local\Temp\pip-install-vdmud3pk
Created temporary directory: C:\Users\user\AppData\Local\Temp\pip-ephem-wheel-cache-fg2uydxh
Looking in indexes: https://username:****@my-endpoint.northeurope.cloudapp.azure.com/pypi-server
1 location(s) to search for versions of my-package:
* https://username:****@my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
Fetching project page and analyzing links: https://username:****@my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
Getting page https://username:****@my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
Found credentials in url for my-endpoint.northeurope.cloudapp.azure.com
Looking up "https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/" in the cache
Request header has "max_age" as 0, cache bypassed
No cache entry available
Starting new HTTPS connection (1): my-endpoint.northeurope.cloudapp.azure.com:443
https://my-endpoint.northeurope.cloudapp.azure.com:443 "GET /pypi-server/my-package/ HTTP/1.1" 200 17882
Updating cache with response from "https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/"
Fetched page https://username:****@my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/ as text/html; charset=utf-8
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.0-py3-none-any.whl#sha256=b284473ff239b3cc9db24eb6668de85ca9a39b714aa6158c03974ecdaffee66d (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.0.tar.gz#sha256=3cda4e71dabc7576ceb48eb491b2067658dc48005d71a53c35af12910bd14d16 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.1-py3-none-any.whl#sha256=cc0770e12ded95f3d0b94a858912f89a879ac8198f574c9d25cfe5318a4a77c1 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.1.tar.gz#sha256=ed37cde74aab0c16e933c9de99461526d87de67208d534f4ca35b96db9b0a5f1 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.2-py3-none-any.whl#sha256=0b69611482c2000c761a49908164b90469d3124dbe3a1258575c69d9f64586e8 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.2.tar.gz#sha256=8ecdf39c3fb716c6a64de0db670077413c708d1559f9dc822ad577b641fe8297 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.3-py3-none-any.whl#sha256=995c86fbef124921d46e55cbf550ddc09ddc2e46106a0a74484bb9f585e67a35 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.3.tar.gz#sha256=2c4dba0982ca5436501498d0acaec1e2775215cebbcde976fc8659a36ea7c0aa (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.4-py3-none-any.whl#sha256=5c02c51c14a4cf558fc016686a29e7ce8e7e160bbf5d05cb240455c1a732a20c (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.4
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.4.tar.gz#sha256=f57b1ab0fc52f54da5d846abfa9829c36ccf48b182da87b50c85377f1bd450b3 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.4
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.5-py3-none-any.whl#sha256=095a4ba1c3f16c5f4efcc51966779b60740a27c9bf5ed018e955e2f77bde4e06 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.5
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.5.tar.gz#sha256=6cab1db8e6fbf6a27758746fa7fa9ea529c5707f8f0ea3b4c849277151a0ba2b (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.5
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.6-py3-none-any.whl#sha256=ab70b7e8dd1cfacb79569c7e59779fff70cbe0f4dd81ec4070ce42e4ab1327ec (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.6
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.6.tar.gz#sha256=294a0badff126a0962b4f60099ba3a0ce06537ea00f59537db8ebab3a772d546 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.6
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.7-py3-none-any.whl#sha256=09ad205fd1a92646660711586f29e709bb35a3dd50a8649077dea37d995f87ef (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.7
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.7.tar.gz#sha256=21b516c2d1ed2023c4a3b58b8503cbb348de3df06b5501436a9c12007a4b5b35 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.7
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.8-py3-none-any.whl#sha256=fef2ecb398cd24c0f0c6c5a737f7707e7efca13a3432c754ee110ba0ac1c179a (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.8
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-15.0.8.tar.gz#sha256=49b84a1cc870f6dfc9b0a13c197c4633180468a95228152e415c380c66132f55 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 15.0.8
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.0-py3-none-any.whl#sha256=860f68c47dd733cb26ae6f01c7657291231703f7eca8dafd50541eecf7ff8708 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.0.tar.gz#sha256=49c6a173f0ab9fa6bd8b23058cd45783427c9a2cd790644937f29631195d2821 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.1-py3-none-any.whl#sha256=e59d0d064a6628483058d4cc2950c9b6e567516ef777622b227f487da413f109 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.1.tar.gz#sha256=4e69d4d59ebaa2a8481e3593f85eed3764ac608cc1cda30f3de6e323d17d310a (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.2-py3-none-any.whl#sha256=d88f9dfa43589e3f371703c72faf34a23ca385b4f5783d6a7c0ab7563bc46a96 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.2.tar.gz#sha256=0dd07a3a4872bc93deee0640d8985a312575994fd5e1b24ddd3267253d0a14c9 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.3-py3-none-any.whl#sha256=91c0454f84410e75f38dc2eb3256d5782663925670d131b081b1d7066dfe13ee (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.0.3.tar.gz#sha256=954354c90cadaebe707ca028ea9d00c51832b96e8d6635465fa8bbf09b261375 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.0.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.0-py3-none-any.whl#sha256=618ddff2d4ce0a2dfc3503aecae1279a579e56a1f5293f08c3f1d3a9b1729ccf (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.0.tar.gz#sha256=549e78abb8fc1a881354df49564c0e78430483a42540bd928896f64c2971a60b (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.1-py3-none-any.whl#sha256=15c55343610e36bd03f8ce296f4856897e86a91b36145dc7c4fb5aadd31f70ca (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.1.tar.gz#sha256=9bbf78a976647f1ef1a81757bb1306c74bf86817f44ebc57a3b2dc0c8d1c7336 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.2-py3-none-any.whl#sha256=6744ec168ce3cf620d634573df04853d466de68b8dcc6271c6158ef865850b61 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.2.tar.gz#sha256=0eef494f2c303ee1aee0fd8e2bbe4af558d7f5b36851c9b0cc38c8350d6e5b1e (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.3-py3-none-any.whl#sha256=f3071fb7b54fc171b15239bcba8d5d82bc016b5a63a1254c054ea531b744f93f (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-16.1.3.tar.gz#sha256=bbe083fd3130b7fd7a29888595f7fe0a811870c31371e2985964e961afd05287 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 16.1.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.0-py3-none-any.whl#sha256=59d18a5dd345ff5214068e00b9ccbad4be04150301aeb36e3c379080dc697340 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.0.tar.gz#sha256=f53d614e9cb9233aa84bc4fc137d90e7bfc52179907d759c0eb92012c623b606 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.1-py3-none-any.whl#sha256=d6896d3329673001e14e45994aa57f763ef3c759af5b9ba5d914c018bccdec53 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.1.tar.gz#sha256=328cf9b925fe609fd311d4a104b6abf0da03358b1dbe1c9d301170c5ac53b273 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.2-py3-none-any.whl#sha256=9164ce1d99bf2b33a60ba28f3541ec0ddf4b9c74e03406fbafcab8e13c0814ac (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.2.tar.gz#sha256=627fae2884dbf13e604c487d62a97ea32321ec7cf9d7085df59ce929d9991ce6 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.2
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.3-py3-none-any.whl#sha256=92a4f76fa9ac406ac5e27b549e7d10ea73fdac0168b368758de1d71a3088eeae (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.0.3.tar.gz#sha256=1489be9eb8c1288d9d93998250be48c5a42f4035583629a5670b5deae1180bd7 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.0.3
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.1.0-py3-none-any.whl#sha256=6974cf44560f67c23bed6fb4db1e203b345e1e5e521cc02bb5dd29fb54b3c581 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.1.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.1.0.tar.gz#sha256=c7aaf6f80057f891a923464e9a28428e6dd9ff53868e675cee84ab825322a637 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.1.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.1.1-py3-none-any.whl#sha256=06a749cd825544a6f6c348249e04ee9f20e74eb9dea01e3a78027ec7d32a5680 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.1.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.1.1.tar.gz#sha256=31fca29e52f59326f5246d07b95f50f09a92a2252f1e1e3072a90454c7f194a3 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.1.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.2.0-py3-none-any.whl#sha256=2650eae31f449c9e796c890a0547aaf53db79aa4b74df913b007c06af09da16e (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.2.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.2.0.tar.gz#sha256=8e368ec3c712aab0a6807e52cb3563c2d2f8cd9f387b3c6fc4627a4e8ab07da5 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.2.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.3.0-py3-none-any.whl#sha256=651d09f1abc9899639b154f5383ec7c962c17aeead16c05bee97c6e398f327b1 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.3.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.3.0.tar.gz#sha256=50bbf9436af0a5255c6de832583da2e96b62b806fa4954c8ffb88b36ec6b2e8d (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.3.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.3.1-py3-none-any.whl#sha256=69da699da7e5689da337e3eaec05799f270266c2c108377f11a86b87dc8a62dc (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.3.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.3.1.tar.gz#sha256=1c4170bae42d84a4284b108c9223d27234a82e218410e8b88da9d055824b815d (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.3.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.4.0-py3-none-any.whl#sha256=2bf69279d7038303a50e97f84267dfc51b16210f52c3a38b2588d232d6535d13 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.4.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.4.0.tar.gz#sha256=8229fb9a72fd0cb235efa51a8be8621f17fd2c21d9f5a4de7bd4a756964c7240 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.4.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.4.1-py3-none-any.whl#sha256=305eea1b5772e06fccf1cb48244eea312ce5170ab571fe0251a7dc05babca98c (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.4.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-17.4.1.tar.gz#sha256=b6314d50f001e27909eed11a85bb007d23737df8edaa448b4cdb242579d1f1c6 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 17.4.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.0-py3-none-any.whl#sha256=3d2ad0202e5339d236e3fde0c1bf57316d78d85ad2d4291f66965d9df0832a3a (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 18.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.0.tar.gz#sha256=ed559dcb542e29dbc81fd34a719cdd5cfc9f45a439e9e90b419c19b264ad57b1 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 18.0.0
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl#sha256=43463b3c88fde65fba3f631b56be9fa1ef18a3b9b02a65f7bfed0a42036e9042 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 18.0.1
Found link http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1.tar.gz#sha256=7d9ed196e703e0557ffffd2c91d725e76f52d438439fd2d38faf326e0f2dfd24 (from https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/), version: 18.0.1
Skipping link: not a file: https://username:****@my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/
Given no hashes to check 60 links for project 'my-package': discarding no candidates
Collecting my-package
Created temporary directory: C:\Users\user\AppData\Local\Temp\pip-unpack-p59dcq1d
Found index url https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/
Found credentials in index url for my-endpoint.northeurope.cloudapp.azure.com
Starting new HTTP connection (1): my-endpoint.northeurope.cloudapp.azure.com:80
http://my-endpoint.northeurope.cloudapp.azure.com:80 "GET /pypi-server/my-package/my_package-18.0.1-py3-none-any.whl HTTP/1.1" 308 164
Looking up "https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl" in the cache
No cache entry available
No cache entry available
https://my-endpoint.northeurope.cloudapp.azure.com:443 "GET /pypi-server/my-package/my_package-18.0.1-py3-none-any.whl HTTP/1.1" 200 2764
Downloading http://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl (2.8 kB)
Updating cache with response from "https://my-endpoint.northeurope.cloudapp.azure.com/pypi-server/my-package/my_package-18.0.1-py3-none-any.whl"
Requirement already satisfied: pydantic<3.0.0,>=2.10.6 in c:\users\user\appdata\local\programs\python\python310\lib\site-packages (from my-package) (2.11.3)
Requirement already satisfied: annotated-types>=0.6.0 in c:\users\user\appdata\local\programs\python\python310\lib\site-packages (from pydantic<3.0.0,>=2.10.6->my-package) (0.7.0)
Requirement already satisfied: pydantic-core==2.33.1 in c:\users\user\appdata\local\programs\python\python310\lib\site-packages (from pydantic<3.0.0,>=2.10.6->my-package) (2.33.1)
Requirement already satisfied: typing-extensions>=4.12.2 in c:\users\user\appdata\local\programs\python\python310\lib\site-packages (from pydantic<3.0.0,>=2.10.6->my-package) (4.12.2)
Requirement already satisfied: typing-inspection>=0.4.0 in c:\users\user\appdata\local\programs\python\python310\lib\site-packages (from pydantic<3.0.0,>=2.10.6->my-package) (0.4.0)
Created temporary directory: C:\Users\user\AppData\Local\Temp\pip-unpack-6p7vda79
Installing collected packages: my-package
Successfully installed my-package-18.0.1
Remote version of pip: 25.1.1
Local version of pip: 24.0
Was pip installed by pip? True
Thanks for sharing! What are you using for your index? I can see again in the pip logs that the wheel URLs are ’http’ instead of ’https’, which I wouldn’t expect, especially for an authenticated index.
What do you mean by what am I using ?
For example, are you deploying a private pypiserver or some other solution? From the URLs it doesn't look like you're using Azure Artifact.
There are two aspects of this issue. On one hand, we need to investigate how we want to handle the case where an index unexpectedly returns http URLs. On the other hand, your server or reverse proxy might not be configured properly since it's returning http URLs for wheel files (and should probably be returning https instead). That's why I'm asking about the details of your index.
Yes it is a private pypi server hosted in azure
Do you know why it's returning http URLs for the wheel files when the provided index URL uses https? Is that a configuration at the server level or the reverse proxy or something else?
We checked with my MLE colleague and it seems like pip sends only GET while uv sends a HEAD on top of GET, and you were right, our private server does not support HEAD yet. We we are going to update our private repo so it supports HEAD also to be able to use uv.