On 16 July 2013 00:12, Oscar Benjamin <oscar.j.benjamin@gmail.com> wrote:
On 15 July 2013 23:39, Chris Barker - NOAA Federal
<chris.barker@noaa.gov> wrote:
> On Mon, Jul 15, 2013 at 3:28 PM, Donald Stufft <donald@stufft.io> wrote:
>> There is something like 200 total bdist_msi on PyPI and 5k bdist_wininst.
>
>> To put numbers into perspective, there are ~180k total files uploaded to
>> PyPI.
>
> I don't hink this means that the installers aren't widely used, I
> think it mean they aren't distributed on PyPI.
>
> Installers are really useful for packages that require compiled code
> that depends on external libs -- and most of the major such package
> maintainers provide them.

I second this. I use pip all the time for pure Python packages on
Linux and Windows because it works very well for these. However when
it comes to numpy, matplotlib, wxpython, PyQT4 et al. I wouldn't even
attempt to use pip on Windows.

Most commonly I would do the standard Windows thing of going to the
project website and looking for the downloads page. I've also used
Christian Gohlke's index of science-related Windows binaries [1] which
are supplied as .exe files. He says that "Most binaries are built from
source code found on PyPI..." or in other words if it were easy to
build these with pip then his index would be unnecessary.

When wheel distribution becomes common I hope that this situation will
improve substantially though.

Precisely. At the moment, unless you need to compile code with external dependencies, pip install works fine (it's even fine for C code without dependencies if you have a compiler). But once the build process is even slightly complex, wininst installers are the only real answer. The fact that they don't work on virtualenvs is a pain, but there are 2 ways round this:

1. I believe that easy_install will install wininst installers. I've not tried myself.
2. You can use wheel convert to make wheels out of wininsts, and then pip install those. This is what I do, and it's really effective. I keep a local index of converted wheels to limit the download/convert overhead.

I'd like to see more wheels on PyPI and sites like Christoph Gohlke's move to providing wheels, and preferably in a PyPI index style format, so people can pip install *anything*. But obviously that's the authors' (and people like Christoph's) choice.

MSI is a lousy format in this context, because it's near-impossible to introspect, and hence convert to a wheel or anything similar.

Paul