[Distutils] Test Windows Installers

Steve Dower Steve.Dower at microsoft.com
Thu Oct 3 23:59:34 CEST 2013

I've done basic testing (install, pip install, pip list, pip uninstall, repair, uninstall) against:

WinXP SP3 x86
Vista SP2 x86/x64
Win7 SP1 x86/x64
Win8 RTM x86/x64
Win8.1 RTM x86/x64

With Python 2.7.5, 3.2.3 and 3.3.2, x86 and x64 for each. (It helps to have a bit of practice with large test matrices, convenient access to clean VMs for lots of operating systems, and a couple of internal automation tools :) )

One issue I noticed is that if you've previously installed pip from source and it's in easy-install.pth, the version from the MSI won't be used when it is installed. The same applies to setuptools. (I used setuptools 0.9.8 and pip 1.3.1 for testing this.)

In general there don't seem to be any other problems with it. I've noted some possible issues below, but since I don't know how much control you have over these, please don't take it personally if I'm pointing out things that cannot be changed.

- the default value for specifying a manual path ("D:\PythonX") should probably be "C:\PythonXY" where XY is the version the installer is targeting.

- 64-bit versions of Python installed for all users are not detected. Are you planning a 64-bit version of this installer? (Specifying the path manually worked fine.)

- the RemoveFile table is incorrect for Python 3.x - there are no references to __pycache__ folders, only to .pyc and .pyo files in the same folder as their .py counterpart. As a result, uninstall is not clean for Python 3.2 and 3.3. In particular, Python 3.3 will show this (instead of "No module named pip"):

C:\ >C:\Python33\python.exe -m pip
Traceback (most recent call last):
  File "C:\Python33\lib\runpy.py", line 140, in _run_module_as_main
    mod_name, loader, code, fname = _get_module_details(mod_name)
  File "C:\Python33\lib\runpy.py", line 105, in _get_module_details
    if loader.is_package(mod_name):
AttributeError: 'NamespaceLoader' object has no attribute 'is_package'

- choosing between 'All Users' and 'Just For Me' in the pip installer didn't seem to affect the install location.

- uninstalling Python before pip worked fine. (No problem here, just letting you know that I tried it :) )
- selecting both install options (Python from registry/custom path) and specifying the same path worked fine

- all machines were clean OS installs + Python from python.org. I didn't try installing Python from other sources
- I only tested upgrading pip with the installer on Windows 8, but I'm confident it will behave the same on all other platforms

All up, it looks great, and it's going to make things much easier for Windows users. Thanks for doing this.


-----Original Message-----
From: Distutils-SIG [mailto:distutils-sig-bounces+steve.dower=microsoft.com at python.org] On Behalf Of Donald Stufft
Sent: Thursday, 3 October 2013 0712
To: DistUtils mailing list
Subject: [Distutils] Test Windows Installers

Anyone who has a windows machine mind testing some installers for me?

These should install pip and setuptools:




Let me know?

Donald Stufft
PGP: 0x6E3CBCE93372DCFA // 7C6B 7C5D 5E2B 6356 A926 F04F 6E3C BCE9 3372 DCFA

More information about the Distutils-SIG mailing list