[Distutils] The Wheel specification and compatibility tags on Windows

Daniel Holth dholth at gmail.com
Wed Feb 27 18:41:52 CET 2013


On Wed, Feb 27, 2013 at 12:23 PM, Vinay Sajip <vinay_sajip at yahoo.co.uk> wrote:
> I have a question about the compatibility tags used by Wheel (PEP 425) and their
> completeness on Windows. IIUC, it may not be enough to consider the platform and
> the Python ABI (determined by the Python version). In addition, on Windows, we
> may have to consider the version of compiler used to build a distribution, as it
> may not be compatible with a particular Python (even if platform and ABI match)
> if the Python was built with a different version of Visual Studio from that used
> to build the extension. I believe this is to do with the version of msvcrXX.dll,
> which is tied to the compiler version: both the Python and the extension need
> to link to the same Microsoft C run-time DLL.
>
> If I'm wrong about this, can someone please explain what my mistake is? If I'm
> right, do we perhaps need to amend the platform tag to include the compiler used?
> Currently, it's just distutils.util.get_platform().replace('-', '_').

That is a concern, there seem to be a nearly unlimited number of ways
that binaries can be incompatible with your platform, I believe some
numpy stuff includes the version of a numeric library in their
(non-wheel) system.

I designed that assuming PyPI would be expected to host binaries
compatible with the official Windows release of Python, rather than
including the Visual Studio version in the wheel tags themselves.
Maybe you'd have a separate build server / binary package service for
a popular but incompatible Windows Python.

However on mac the OS X version (important for binary compat) is
already included in that tag.

Daniel


More information about the Distutils-SIG mailing list