Differences between distribute, distutils and setuptools?

I’m a distutils maintainer and distutils2/packaging contributor. I did a talk about Python packaging at ConFoo 2011 and these days I’m writing an extended version of it. It’s not published yet, so here are excerpts that should help define things.

I’m a distutils maintainer and distutils2/packaging contributor. I did a talk about Python packaging at ConFoo 2011 and these days I’m writing an extended version of it. It’s not published yet, so here are excerpts that should help define things.

Distutils is the standard tool used for packaging. It works rather well for simple needs, but is limited and not trivial to extend. Setuptools is a project born from the desire to fill missing distutils functionality and explore new directions.In some subcommunities, it’s a de facto standard.

It uses monkey-patching and magic that is frowned upon by Python core developers. Distribute is a fork of Setuptools that was started by developers feeling that its development pace was too slow and that it was not possible to evolve it. Its development was considerably slowed when distutils2 was started by the same group.

Distutils2 is a new distutils library, started as a fork of the distutils codebase, with good ideas taken from setuptools and thoroughly discussed in PEPs for some of them, and a basic installer inspired by pip. The actual name that can be imported is “packaging� In the Python 3.3+ standard library or “distutils2�

In 2.4+ and 3.1-3.2 (a backport will be available soon). More info: The fate of Distutils – Pycon Summit + Packaging Sprint detailed report A Quick Diff between Distutils and Distutils2 I hope to finish my guide soon, it will contain more info about each library’s strong and weak points and a transition guide.

Thanks, this is the perfect answer! I'd appreciate it if you could add a link to your guide once it's published. – VPeric Jun 30 at 9:00 @Éric Araujo Please help me understand this, will distutils2 and distribute one day converge in a unique tool/library?Thanks.

– Guandalino Jul 11 at 13:32 1 No. Distutils2 takes some good ideas from setuptools/distribute, after standardization (PEPs) or not (for example, I mentor a GSoC student who’s adding a develop command and automatic scripts generation), but it won’t ever be a drop-in replacement: there are some parts we don’t want (eggs, VCS integration, etc. ). OTOH, distutils2 has some things that setuptools/distribute have not.

To ease transition, I think the distribute developers maybe will use distutils2 to support new standards and tools; I also think I remember the setuptools developer saying that he wants to support new standards. – Éric Araujo Jul 29 at 14:09 2 The picture in this blog post is a good summary of the future of distutils2 of distribute: tarekziade.wordpress.Com/2010/03/03/… distribute will reach end of life in a few years, people can start using distutils2 in parallel to distutils or setuptools/distribute right now (the guide I’m finishing will have a HOWTO on that), and distutils2 is intended to replace distutils/setuptools/distribute for all intents and purpose. – Éric Araujo Jul 29 at 14:09.

I came across this explanation about the current state of packaging. It seems that everything is moving towards distutils2, so I am not sure there is a standard way of setting things up currently. I would use distutils2 directly, but it will only be part of the standard with python 3.3.

2 I think (though I can't find source for this info) that distutils2 is going to be renamed as "packaging" when it's added to python 3.3; and the "distutils2" package is going to remain available as a backport for py2.6-3.1. With all of that in flux, for myself I'm using distribute, though with the expectation that the distutils2-based future will arrive within a year. – Eli Collins Jun 14 at 15:47.

Yep, you got it. :-o I think at this time the preferred package is Distribute, which is a fork of setuptools, which are an extension of distutils (the original packaging system). Setuptools was not being maintained so is was forked and renamed, however when installed it uses the package name of setuptools!

I think most Python developers now use Distribute, and I can say for sure that I do.

For the record, I accepted this answer because it told me the situation now (And the is fork of is extension of relation that the picture in the other answer just doesn't mention). And somewhere along the road I also learned that the documentation itself isn't usually sure what it's trying to say. – VPeric Jun 23 at 12:26 1 @VPeric, Indeed, the documentation reflects the fact that this aspect of python is in a state of flux/ a mess.

– juanchopanza Jun 23 at 14:19.

I realize that I have replied to your secondary question without addressing unquestioned assumptions in your original problem: I'm trying to port an open-source library (SymPy, if anyone is wondering) to Python 3. To do this, I need to run 2to3 automatically when building for Python 3. You may, not need.

Other strategies are described at docs.python.org/dev/howto/pyporting To do that, I need to use distribute, You may :) distutils supports build-time 2to3 conversion for code (not docstrings), in a different manner that distribute’s: docs.python.org/dev/howto/pyporting#during-installation.

Thanks, though we've already decided to solve the problem by writing our script to handle the conversion. And yeah, I knew there were other options than using 2to3, but SymPy is a complex codebase (around 200k+ lines last time I checked) and using 2to3 was the only realistic strategy. Thanks again, in any case!

– VPeric Jul 31 at 20:49.

I cant really gove you an answer,but what I can give you is a way to a solution, that is you have to find the anglde that you relate to or peaks your interest. A good paper is one that people get drawn into because it reaches them ln some way.As for me WW11 to me, I think of the holocaust and the effect it had on the survivors, their families and those who stood by and did nothing until it was too late.

Related Questions