Porting Overview
Platform agnostic packages
Any package, that is distributed only by a generic “*none-any.whl” file, is considered a platform agnostic package.
Installing these packages via pip shouldn’t cause any problems (except for dependency issues), as these are not required any platform specific step, mostly copying file from the package to the system.
These packages can be considered as pure Python libraries also.
Dependencies
Although a given package is considered platform agnostic, it still could depend on platform specific package(s) that could cause installation and/or runtime failures.
Example
pytest: pytest
Installing a package to win-arm64
Installing a platform agnostic package to win-arm64 requires native win-arm64 Python interpreter, setuptools and pip as a module.
Steps are documented here: Package building tutorial | 1.2. Build machine: WoA = win arm64
Platform dependent packages
Any package, that is distributed by platform specific wheel files, is considered a platform dependent package. The “*none-any.whl” package in this case includes the source files and used for the fallback mechanism of install: when pip doesn’t find the right platform, it will fetch the generic wheel with the source and tries to build it locally.
Porting these packages usually require a C/C++ compiler, but it should be checked from project to project.
Example
Cython: Cython
Installing a package to win-arm64
Installing a platform dependent package to win-arm64 requires the minimum set as for a platform agnostic package, plus a compiler to build the platform specific code. As most of the packages are based on C/C++ code, this is usually a C/C++ compiler. This C/C++ compiler for Windows is MSVC.
Steps are documented here: Package building tutorial | 1.2. Build machine: WoA = win arm64
If the build is still failing (build_ext), it means that package don’t support win-arm64 out-of-the-box, because of a dependant package includes platform specific code that needs porting.