[Distutils] Distribute and setuptools: what are the differences

Lennart Regebro regebro at gmail.com
Tue Oct 13 16:26:46 CEST 2009

2009/10/13 Michael Whapples <mwhapples at aim.com>:
>> Distribute is a fork and a complete replacement of setuptools. Hence
>> you can only have one installed in each environment at once. Yes it's
>> a mess.
> May be there's certain reasons why setuptools and distribute couldn't be
> designed to coexist on a system (eg. may be its something to do with how
> they manage the package environment and include packages in eggs)

Because setuptools is used not only when you create packages, but also
when you install them, is the main reason. And that means we need to
replace setuptools. Again, it's not a choice on the package level, but
on the user level. It's like a car. It requires wheels. Which brand
you use doesn't matter. But you can't have 8 sets of tires on a 4
wheel car. :)

>> There really is not many reasons for any package to require distribute
>> over setuptools. It's not a package choice, it's a user-choice.
>> I sort of understand that but not fully. A package may need to specify
>> distribute if it wants to be python3 compatible.

Nope. It needs to *use* Distribute to install under Python 3. But that
is not a problem, as setuptools doens't exist for Python 3, so there
is no conflict there. But it would still specify and import

> The only way I can get what
> you say to work in my mind is not to use the automatic install of
> setuptools/distribute (IE. not to use distribute_setup.py or ez_setup.py in
> my setup.py script, I mean those lines:
> from ex_setup import use_setuptools
> use_setuptools()

Oh, right, don't do that. Does any package do that? Crazy stuff. :-)

>> If it helps you, it helps.
> I was more meaning it doesn't help the python community, it doesn't help
> solve this mess.

I don't think this mess can be solved. We can only walk around it by
building something new and better by refactoring setuptools into small
pieces. I know some people of the Distribute team has started
(tentatively called Distribute2) and PJE has also expressed interest
in doing this. If some sort of cooperation can happen there that would
be good, if not people will have a choice, and that's also good. In
any case Distribute 0.6/setuptools will slowly go out of use. But this
is a process that will take years. Unfortunately I don't think a short
term solution is realistic.

> Anyway I will have to just consider what direction would be most productive
> for my packages

Neither. You don't need a direction for your packages. If setuptools
have a feature you need, use it. If setuptools turns out to have bugs,
or you need Python 3 support, then install Distribute. Your package
will not notice the difference.

I'd like to repeat again, just to make sure that there are no
misunderstandings, that this is not about winning, and that there is
no competition between setuptools and distribute. Distribute is, as of
today, only one thing: setuptools + bugfixes + python 3 support. There
is no reason for you to use Distribute unless you need Python 3
support or encounter a setuptools bug (unless you feel like fixing
bugs or betatesting Distribute of course).

setuptools 0.6c10 will remove most or all of the bug difference, which
means there is less reason for people to switch to Distribute. That's
a good thing. Distribute doesn't need users. It's users who needs
Distribute. That's why it exists. It's driven purely out of necessity,
nothing else.

Lennart Regebro: Python, Zope, Plone, Grok
+33 661 58 14 64

More information about the Distutils-SIG mailing list