A New Harvest of Python IDEs
- A New Harvest of Python IDEs
- Four IDEs
- Innovation and Conservatism
- PythonWorks
- Wing IDE
- Pythonwin
- IDLE
- Conclusion
- Resources
Use this pragmatic guide to pick the Python IDE that's right for you. The author compares and contrasts the most important features, and illustrates each IDE with screenshots to help his descriptions.
Introduction
Python developers have always had reason to look with some measure of jealousy at their Java, C, or C++ colleagues. There have always been excellent integrated development environments (IDEs) for those languages, both for Windows and for Linux. Examples abound: Borland JBuilder, Microsoft Visual C++, Kdevelop, and so on.
Python, in comparison, has always been an "editor and a shell" language. Not that there is anything wrong with the "editor and shell" approach, but the integration of a source browser, debugger, Python shell environment, project manager, editor, and perhaps GUI editor in one package can make a developer very productive. Of course, the boundaries between editors and IDEs are fuzzy. I'm quite sure that Emacs with its Python mode should count as an IDE, too, but in this review, I'm concerned with dedicated Python IDEs.
Python has had the IDLE IDE since version 1.5.2, but until now only Windows has had a really comfortable IDE, namely Pythonwin. The lack of good Python IDEs for Linux also points to a difference between Windows or MacOS and Unix that's very importantwith the Unix shell being so much more comfortable than a DOS box and the editors so much better than their Windows counterparts, it seems natural that Windows Python IDEs are far more advanced than Unix Python IDEs. However, with the release of Wing IDE for Unix/X11 and the imminent release of PythonWorks for Linux, this is set to change.
Python IDEs are, for the most part, written in Python, using one of the several available widget sets, such as tkInter, Pythonwin, or PyGTK. Indeed, the Python libraries offer several very useful modules for writing IDEs, such as pyclbr.py, which implements the parsing for a class browser, or pydb.py, which offers the basics for a debugger. These modules have been available for a very long time, and it's curious to see that they haven't been utilized more extensively before.