2009/10/27 Chris Withers <chris@simplistix.co.uk>:
My point is the bdist_win installers work fine for both your use case, Paul, and Chris' use case, so there's no real conflict.
OK, and yet people still seem to argue for eggs rather than bdist_wininst, and projects provide eggs rather than bdist_wininst. Something's not working here, even though logic says it should.
Well, speaking only for myself, I never use bdist_wininst packages because they do no dependency management.
Maybe someone has confused me. I understood that easy_install can consume bdist_wininst format .exe files just as easily as .egg format, and easy_install will do your dependency management for you. So, if you provide a bdist_wininst .exe format file: 1. People who want integration with add/remove just run the .exe and are happy. 2. People who want dependency management use easy_install which transparently uses the .exe. If you provide egg format files, only group (2) are satisfied. And if you provide both, you just make extra work for yourself. Obviously, this only applies to Windows. By all means provide eggs, rpms, debs, or whatever suits your users for other platforms. If this scenario is wrong, then I've seriously misunderstood the situation (for which I apologise, but I don't think it's just me). I can't recall where I got this understanding from, but I *think* it was from the easy_install documentation. No time right now to check this, sorry.
If I release a package that has no external dependencies, I'll stick a bdist_msi or bdist_wininst if asked, but it's rarely asked for.
My point is that you could stick up the bdist_wininst at no cost to your existing users, and some benefit to certain other users. I suspect, based on my own behaviour, that there's a proportion of people who won't ask for a bdist_wininst, but will just not bother with your package (depending on lots of other things, not least of which is the level of competition).
From that I infer that most people use tools like buildout or pip to manage installation, even on Windows. Again, as a package consumer, I prefer one cross-platform package management method for Python packages, regardless of what operating system I happen to be working on at the time...
This inference probably depends on your user base and the area you're working in. My impression is that buildout/pip are favoured among web developers, but not so much people writing console scripts or standalone applications. I don't think anyone has a clear picture of the overall situation. My focus is very, very narrow here, and I acknowledge that freely. All I care is that Windows users without the tools, time or expertise to build non-trivial C extensions have access to workable binary builds. Consider the following list of packages: wxPython, PyQT, PyGame, cx_Oracle, pywin32, PIL, lxml, numpy, pyCrypto I can't build these myself, and if the projects only provide eggs, I can't use them (unless I use easy_install or something similar, and accept the implications of that). I had to move one project away from mod_python because there's no binary installer for Python 2.6. That's where my interest lies. For pure-python packages or packages with C code with no external dependencies, I have no problem building my own bdist_wininst so I don't care, any more than someone who exclusively uses python setup.py install would care. It's when I rely on someone else building binaries for me that their choice of binary format impacts me. Paul.