Setuptools on Python 3: Work on hold.
Edit: Distribute now supports Python 3. This posting is therefore outdated and no longer of interest. Go away.🙂
I’ve currently suspended the work on porting Setuptools to Python 3. If you need it, there is the version I made earlier on the Python-incompatibility project page. It seems to work. If people want to fix bugs you can still mail me and I’ll give you access to fix it. It’s very unlikely that it ever gets merged.
Why? Well, it basically comes down to that setuptools code is messy and hard to understand and Phillip J. Eby argues against all efforts of improving it. That gives me three options: Fork setuptools, rewrite it from scratch, or give up. I don’t want to fork it, mainly because I don’t think the code is good enough to be worth forking. It’s so hard to maintain, that if we need to fix it without Philip J Ebys support, it’s probably easier to rewrite from scratch. But… I can’t rewrite it from scratch, I simply do not understand the issues well enough to do that. So, at least for the time being, I give up.
This means that there is no official setuptools release. That means it’s going to be hard to port and install any python module using setuptools. This is probably the majority of Python modules on PyPI, because the biggest creators of Python modules is Zope/Plone and these modules all use setuptools. This of course also means that my porting of zope.interface that I started is on hold. In fact, it means all my Python 3 porting work is on indefinite hold. Setuptools is currently the major obstacle for widespread acceptance of Python 3. Sad but true.
So what are the alternatives if you want to port to Python 3? Well, first of all, if you use setuptools, get rid of it. If your module only uses distutils, you can port it to Python 3, and have 2to3 run automatically by using build_py_2to3 in place of build_2to3. It can often be quite a pain to move a project that uses many setuptools features to plain distutils, but currently I can’t recommend using setuptools if you plan to move to Python 3.
If you feel you really need setuptools functionality in your project, join email@example.com, and discuss how we can solve the situation. Right now I feel that the most likely way forward is to rewrite setuptools, and possibly also distutils, from scratch.