[Distutils] Distutils and Distribute roadmap (and some words on Virtualenv, Pip)
p.f.moore at gmail.com
Tue Oct 27 19:16:06 CET 2009
2009/10/27 Chris Withers <chris at 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,
> 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.
More information about the Distutils-SIG