Packages

This section summarises the progress of porting python packages for windows on arm64 platform.

A large number of python packages have platform-specific code and they need to be ported explicitly for new platforms such as windows on arm64.

Please see our investigation into python packages that need porting for win/arm64 here

Please checkout Pre-release Python binary wheels and dependencies for unofficial pre-release of packages for testing.

Python Package

Status

Dependencies

CI/CD

Commit/PR

Notes

Python Package

Status

Dependencies

CI/CD

Commit/PR

Notes

setuptools

Win/ARM64 support

Released in 57.4.0

 

 

https://github.com/pypa/setuptools/commit/f15f814e9e82c2343280e8f62360f12b3023eb5f

 

Windows Launcher support

Released in in 58.2.0

 

 

https://github.com/pypa/setuptools/pull/2758/

https://github.com/pypa/setuptools/issues/2757

pip

Released 21.3

  • distlib

 

 

 

distlib

simple_launcher

Released in 0.3.3

 

 

https://bitbucket.org/pypa/distlib/pull-requests/5?t=1

https://bitbucket.org/vinay.sajip/simple_launcher/pull-requests/1

 

numpy

Released in 1.21.2

  • Fortran compiler

  • Setuptools

  • Azure pipelines for release (Linux only)

  • Github actions for CD

https://github.com/numpy/numpy/pull/19513

Generic issue for numpy, conflicting with coming Pythong 3.10: setuptools-distutils | 2. Important issues

cffi

Released in 1.15.0

 

 

added support for building cffi on windows on arm machines (!107) · Merge requests · PyPy / cffi · GitLab

 

scipy

Investigation Done

  • Numpy

  • OpenBLAS

  • Fortran compiler

 

 

Blocked due to fortran compiler avaiability

sci-kit learn

Investigation Done

 

  • Numpy

  • Scipy

  • Fortran

 

https://github.com/scikit-learn/scikit-learn/pull/20997

flang dlls should be feed into this package, which is a manual step now

unit-tests mostly passed
2 failed, 21039 passed, 1097 skipped, 61 xfailed, 38 xpassed, 4005 warnings

pandas

No porting required.

 

numpy

 

-

if numpy is installed manually for win-arm64, then with “--no-build-isolation” flag, the installation will be successful

lxml

Released

  • zlib

  • iconv

  • libxml2

  • libxslt

 

 

 

pyarrow

Release v6.0.0

arrow

 

https://github.com/apache/arrow/pull/11383

 

greenlet

Merged.

 

 

https://github.com/python-greenlet/greenlet/pull/271

 

Pillow

Released in 9.1.0

  • lcms2

  • freetype

  • zlib

  • libwebp

  • libjpeg

  • libpng

  • libimagequant

  • libtiff

  • openjpg

  • fribidi

 

https://github.com/python-pillow/Pillow/pull/5811

A tale of a dependency chain: Pillow and the crew

pip install by source doesn’t work, because Pillow has its own logic build from source that is not implemented in its setup.py, so win-arm64 specific wheel file release is needed

Pywin32

Released

 

 

https://github.com/mhammond/pywin32/pull/1793

 

Maturin

Released

 

 

https://github.com/PyO3/maturin/pull/674

Build

python setup.py install

Alternatively can build with cargo command directly

cargo run -- build --release -b bin --target aarch64-pc-windows-msvc --no-sdist --cargo-extra-args="--no-default-features" --cargo-extra-args="--features log,upload,human-panic"

The above command works on GitHub CI on x64 machine but seems to fail on arm64 as the cargo-extra-args seems to be ignored.

Test

Remove rustls from cargo.toml

cargo run -- build -i python -m test-crates/pyo3-mixed-submodule/Cargo.toml

pip install --force-reinstall --no-index --find-links test-crates/pyo3-mixed-submodule/target/wheels pyo3-mixed-submodule

pytest test-crates/pyo3-mixed-submodule/tests/

This seems to be the test on CI and test pass on win/arm64 but doesn't look like the right test set.

Pywinpty

Released

  • winpty

  • gyp

 

To build,

maturin develop --release

To run tests,

python runtests.py

All tests should be passing with all of the PRs

cibuildwheel

Released

 

 

https://github.com/pypa/cibuildwheel/pull/920

 

grpcio

Released

 

 

https://github.com/grpc/grpc/pull/28164

 

skbuild (sci-kit build)

Released in 0.13.0
https://github.com/scikit-build/scikit-build/releases/tag/0.13.0

 

 

https://github.com/scikit-build/scikit-build/pull/612

https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28654632982/A+tale+of+a+dependency+chain+Pillow+and+the+crew#scikit-build

pycryptodome

Blocked

 

 

https://github.com/Legrandin/pycryptodome/pull/579

 

azure-uamqp-python

Merged

 

 

https://github.com/Azure/azure-uamqp-python/pull/286

 

TensorFlow

In Progress

 

 

 

 

PyTorch

Merged

 

 

https://github.com/pytorch/pytorch/pull/72424

https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28689793229

matplotlib

Merged

 

 

https://github.com/matplotlib/matplotlib/pull/22429

 

cython-blis

Released

 

 

https://github.com/explosion/cython-blis/pull/67

 

CMake

Released by 3.22.4

sci-kit build

 

https://github.com/scikit-build/cmake-python-distributions/pull/231

x86 emulated CMake is deployed for win-arm64 by this change, so as soon as official native win-arm64 CMake is released, this should be updated

mysqlclient

blocked on dependant proprietary 3rd party library: https://mariadb.com/downloads/connectors/

 

 

 

 

OpenCV

Merged

 

 

https://github.com/opencv/opencv-python/pull/644