CS and the City Sean Lynch

Setting up a Professional Python Development Environment

This week I’ve started some development work that has placed me completely out of my comfort zone: Coding on Python on Windows XP.  I’ve played with Python on a few small one off apps on my own, but this is the first large scale project I’ve taken on with Python as its base.  So although I’m familiar enough with the language to get started, it’s the development environment for writing the code that has me at a loss.

I’ve been trying a myriad of different editors and IDEs trying to find the best tool with the most flexibility.  Unfortunately, the two seem to be opposed.  I believe this is because my short experience with each tool means the “best” is largely the easiest to use.  Easiest to use means more often than not, flexibility is sacrificed for focus.  I’ve been through Crimson Editor, JuffEd (which I am keeping around for simple text editing), GVIM, jEdit, Wing, PyScripter, and Eclipse with PyDev.

The other guys on my team are fans of VIM, but I haven’t been able to motivate myself to overcome its learning curve.  Not that I have anything against purist coding, quite the opposite in fact.  I find the most efficient way to write HTML, CSS, and JavaScript is with a text editor.  Most of my PHP work has been done in TextMate (on OSX), but also on a smaller scale.  I know I need a few more tools to assist in team collaboration, and I’d prefer having an IDE wrangle them all together.

So I came at it from another angle: What features am I looking for that the programs I’ve seen so far just didn’t manage to satisfy?  Well here’s a quick list:

  • See a projects worth of files (in the form of a Project/File browser)
  • Multiple files open at the same time, managed with tabs
  • Hotkey/button code execution
  • Run code through the debugger (not a requisite, but would be useful)
  • Integration with source control
  • Pull code documentation from files in project
  • “Jump to definition” navigation
  • Indentation management (already a peev)

During my research, I found a lot of neat validation-style applications (for my reference: epydoc, pychecker, pylint, pyflake, pep8, doctest, pyunit, nose, thumb.py, figleaf, coverage.py, pycover).  Being able to tie some of these in to a validation process on build or, dare I say inline, would be inter-spectacular.

Does such a beast exist? I’ve spent enough time with Eclipse, I should be able to bludgeon it into doing what I want, but that’s hardly the elegant solution I was hoping for.  Come on magical blogosphere, do your thing!