Closed
Description
I tried uv 0.3.5
to install a specific version of python on my raspberry-pi:
❯ uname -rmo
6.1.21-v7l+ armv7l GNU/Linux
When I try to install python I got:
❯ uv python install 3.12
Searching for Python versions matching: Python 3.12
error: No download found for request: cpython-3.12-linux-armv7-gnu
Looking at the code it seems that all the version available are taken from uv-python/download-metadata.json, where at the moment we have:
{
"cpython-3.12.5-linux-armv7-gnueabi": {
"name": "cpython",
"arch": "armv7",
"os": "linux",
"libc": "gnueabi",
"major": 3,
"minor": 12,
"patch": 5,
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240814/cpython-3.12.5%2B20240814-armv7-unknown-linux-gnueabi-install_only_stripped.tar.gz",
"sha256": "7a584de9c2824f43d7a7b1c26eb61a18af770ebd603a74b45d57601ba62ba508"
},
"cpython-3.12.5-linux-armv7-gnueabihf": {
"name": "cpython",
"arch": "armv7",
"os": "linux",
"libc": "gnueabihf",
"major": 3,
"minor": 12,
"patch": 5,
"url": "https://github.com/indygreg/python-build-standalone/releases/download/20240814/cpython-3.12.5%2B20240814-armv7-unknown-linux-gnueabihf-install_only_stripped.tar.gz",
"sha256": "a9992b30d7b3ecb558cd12fde919e3e2836f161f8f777afea31140d5fff6362e"
}
}
Using other tool such as pystand
they work as expected:
❯ uvx pystand show
3.9.19 @ 20240814 distribution="armv7-unknown-linux-gnueabihf"
3.10.14 @ 20240814 distribution="armv7-unknown-linux-gnueabihf"
3.11.9 @ 20240814 distribution="armv7-unknown-linux-gnueabihf"
3.12.5 @ 20240814 distribution="armv7-unknown-linux-gnueabihf"
Looking at the code from my understanding uv
is trying to infer this information from ldd
while pystand
look at the platform in a simpler way:
# Default distributions for various platforms
DISTRIBUTIONS = {
('Linux', 'x86_64'): 'x86_64-unknown-linux-gnu',
('Linux', 'aarch64'): 'aarch64-unknown-linux-gnu',
('Linux', 'armv7l'): 'armv7-unknown-linux-gnueabihf',
('Linux', 'armv8l'): 'armv7-unknown-linux-gnueabihf',
('Darwin', 'x86_64'): 'x86_64-apple-darwin',
('Darwin', 'aarch64'): 'aarch64-apple-darwin',
('Windows', 'x86_64'): 'x86_64-pc-windows-msvc',
('Windows', 'i686'): 'i686-pc-windows-msvc',
}
Perhaps uv
should use/integrate a similar approach?