Trying to build unittests in Python3.3? Don’t use nose. Despite what they say about it. They use distribute to install, which heralds iteself as “the new hotness” to the “old and busted” setuptools. Also on their homepage is the claim that “Distribute offers Python 3 support !”. Well then, have you tried installing it? Here’s what happens:
$python3.3 setup.py build [output trimmed] $python3.3 setup.py install [output trimmed] File "/usr/local/lib/python3.3/site-packages/setuptools/dist.py", line 103 except ValueError, e: ^ SyntaxError: invalid syntax File "/usr/local/lib/python3.3/site-packages/setuptools/depends.py", line 39 str(version)<>"unknown" and version >= self.requested_version ^ SyntaxError: invalid syntax [output trimmed]
There are 16 errors in total on the install. Now I’m not saying this hasn’t been tested at all, but I sure as hell wouldn’t release a package into the wild, boasting Python3 support, and have it fail miserably during install. Especially while bashing the existing tools, which actually fucking work. It may be “craptastic” to the developers of distribute, but I actually like knowing that I can write a single setup.py with distutils and have it actually work in python 2 and 3.
And now nose is leaving a bad taste in my mouth, even though their software might be fine to run in python3.
Besides, why does python even need yet another packaging technique? What we have works well, and there is FPM if you need to convert your package into something distutils can’t build.
To me right now, maybe out of frustration or whatever, distribute looks like it should be tossed. From just looking through dist.py, the blatant disregard for PEP8, massive blocks of blank lines (wt actual f), use of globals, and general inconsistency make a strong case to not use this module in your code.
Unless you have an actual use case for using distribute other than it being “the new hotness”, don’t waste your time and stick to what works. Alternatively if the new hotness is what you seek, make your code depend on distribute, use mongo as your database, and refactor your web app to use node.js. Because the future is now, everything old is stupid and the new works better, faster and more secure, always. Right?