Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents
minLevel1
maxLevel7

Generic initial overview

Definitions

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: https://pypi.org/project/pytest/#files

...

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: https://linaro.atlassian.net/wiki/spaces/WOAR/pages/28594241585/Build+steps+of+package+building+for+win-arm64#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: https://pypi.org/project/Cython/#files

...

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.

...

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.

Portability Investigation

Please checkout following pages for our analysis which packages require porting for windows on arm64

Python package analysis