How to install Python package from source on Windows

Steve D'Aprano steve+python at pearwood.info
Wed May 17 20:19:19 EDT 2017


On Thu, 18 May 2017 07:47 am, Ian Kelly wrote:

> Because, as has already been stated, there's no way to make such a simple
> process cross-platform.

Please understand that Bart's understanding of cross-platform and the Python
community's understanding of cross-platform are different.

Bart's understanding of cross-platform is:

"I have a Windows box, or maybe two of them, and a Linux VM, and so long as
my code will compile and run a few simple scripts on each of them with no
obvious bugs, I'm going to assume we're done!"

The Python community's understanding is:

"We have to support literally tens of thousands of different combinations
and permutations of hardware, operating system version, variations in how
the OS and user's environment are configured, and variations in C compilers
and how they are configured; we have to support hundreds of different
flavours of Linux alone, plus FreeBSD, OpenBSD, NetBSD, and other Unixes,
plus multiple versions of Windows and MacOS, and possibly a few others; we
have to support machines with different floating point capabilities, and as
much as possible abstract those differences away so that they're not
visible to the end user; and importantly, we want to halt the build process
with a comprehensible[1] error message if some essential feature is lacking
on your platform."


When I first started using Python in version 1.5, among the many Unixes
supported were:

- VAX;
- VMS;
- Sun OS/Solaris (technically a Unix);
- HP UX (also technically a Unix);
- Windows 95/98;
- Windows NT;
- Windows CE;
- OS/2;
- classic Mac OS ("system 6", I think, or possibly 7).

My memory is a little fuzzy on the following, so don't quote me, but I think
the following were also officially supported:

- IBM AS/400 ("System i" or "iSeries");
- BeOS;
- MS DOS;
- Z/OS (OS 390);
- Acorn RISC;

although some of them may not have been official ports. (Most of these are
still available through third-parties.)

Support for a lot of those have been dropped, but it still leaves its traces
in the build system. The most important of which is the use of configure
and make in the first place: even if every Linux and Windows system in the
world today uses exactly the same configuration (which they don't), make
still tests for each of those features because you never know when you
might be running on some exotic mainframe or embedded device with radically
different features.

So tell us Bart, what do you think are the chances that your Q compiler will
*just work* with no modifications at all if somebody tried to build it on
an IBM AS/400, or under BeOS? Or for something a little more current, how
about Android?




[1] Comprehensible to the core devs, not necessarily the end user.


-- 
Steve
Emoji: a small, fuzzy, indistinct picture used to replace a clear and
perfectly comprehensible word.




More information about the Python-list mailing list