Skip to content

Comments

Disallow arm64 Windows Python installs for now#13719

Closed
geofft wants to merge 1 commit intoastral-sh:mainfrom
geofft:skip-arm64-windows
Closed

Disallow arm64 Windows Python installs for now#13719
geofft wants to merge 1 commit intoastral-sh:mainfrom
geofft:skip-arm64-windows

Conversation

@geofft
Copy link
Contributor

@geofft geofft commented May 29, 2025

See #12906 and astral-sh/python-build-standalone#387 - as soon as we start shipping arm64 Windows Python builds in python-build-standalone, uv is going to start discovering them, and there aren't enough arm64 Windows wheels for that to make sense as a default yet. As a very minimal stopgap, consider those builds incompatible.

No functional change expected at the moment, but this unblocks python-build-standalone shipping arm64 Windows Python builds and lets us manage the transition in some better way like a configuration knob.

See astral-sh#12906 and astral-sh/python-build-standalone#387 - as soon as we
start shipping arm64 Windows Python builds in python-build-standalone,
uv is going to start discovering them, and there aren't enough arm64
Windows wheels for that to make sense as a default yet. As a very
minimal stopgap, consider those builds incompatible.

No functional change expected at the moment, but this unblocks
python-build-standalone shipping arm64 Windows Python builds and lets us
manage the transition in some better way like a configuration knob.
@geofft geofft added the windows Specific to the Windows platform label May 29, 2025
@zanieb zanieb self-assigned this May 29, 2025
Copy link
Contributor

@Gankra Gankra left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Absolutely brutal

@zanieb
Copy link
Member

zanieb commented May 29, 2025

I don't think this is quite right, won't we ignore any arm64 Python installations on the machine now? I'll look more closely later.

@Gankra
Copy link
Contributor

Gankra commented May 29, 2025

My alternative solution is here:

@geofft
Copy link
Contributor Author

geofft commented Jun 13, 2025

All right, @Gankra has been thinking harder about how to implement this well, so closing this in favor of her changes :)

@geofft geofft closed this Jun 13, 2025
Gankra added a commit that referenced this pull request Jun 30, 2025
and prefer emulated x64 windows in its stead.

This is preparatory work for shipping support for uv downloading and
installing aarch64 (arm64) windows Pythons. We've [had builds for this
platform ready for a
while](astral-sh/python-build-standalone#387),
but have held back on shipping them due to a fundamental problem:

**The Python packaging ecosystem does not have strong support for
aarch64 windows**, e.g., not many projects build aarch64 wheels yet. The
net effect of this is that, if we handed you an aarch64 python
interpreter on windows, you would have to build a lot more sdists, and
there's a high chance you will simply fail to build that sdist and be
sad.

Yes unfortunately, in this case a non-native Python interpreter simply
*works better* than the native one... in terms of working at all, today.
Of course, if the native interpreter works for your project, it should
presumably have better performance and platform compatibility.

We do not want to stand in the way of progress, as ideally this
situation is a temporary state of affairs as the ecosystem grows to
support aarch64 windows. To enable progress, on aarch64 Windows builds
of uv:

* We will still use a native python interpreter, e.g., if it's at the
front of your `PATH` or the only installed version.
* If we are choosing between equally good interpreters that differ in
architecture, x64 will be preferred.
* If the aarch64 version is newer, we will prefer the aarch64 one.
* We will emit a diagnostic on installation, and show the python request
to pass to uv to force aarch64 windows to be used.
* Will be shipping [aarch64 Windows Python
downloads](astral-sh/python-build-standalone#387)
* Will probably add some kind of global override setting/env-var to
disable this behaviour.
* Will be shipping this behaviour in
[astral-sh/setup-uv](https://github.com/astral-sh/setup-uv)

We're coordinating with Microsoft, GitHub (for the `setup-python`
action), and the CPython team (for the `python.org` installers), to
ensure we're aligned on this default and the timing of toggling to
prefer native distributions in the future.

See discussion in 

- #12906

---

This is an alternative to 

* #13719 

which uses sorting rather than filtering, as discussed in 

* #13721
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

windows Specific to the Windows platform

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants