Welcome to the second part of my Get Going with Python series. In this two-part blog post I’ll try to help you choose a Development Environment.
Update (April 2009) – The Python Development Environments Learning Path covers all the following information and more.
Side note – are you learning Python? We’ve started Club ShowMeDo which is aimed at new and intermediate Python programmers, our specially-crafted Python training screencasts are aimed directly at getting you to learn Python the easy way.
- Getting a Feel for Python
- Python Development Environments (IDEs) parts 1 (this post) and 2
- Python ‘under the hood’
- GUI Development
- Web development
- Writing solid code with Unit Tests
- Games and Physics
- Python Advocacy
This post is aimed at those who are new to Python – if you’re an old-hand then you will probably be familiar with the tools I mention – you might still like the second part where I review the environments I use.
If you’ve come to Python from a background with Microsoft tools (e.g. VC++ or Visual Basic) or Java then you are probably used to a large and fully-featured IDE. In the Microsoft world there is generally just the one tool (Visual Studio) and for Java there are just a few (IntelliJ’s IDEA, Eclipse and NetBeans spring to mind).
In the Python world there are many more options for (and opinions about) development environments. When I started with Python 5 years back I remember being confused about the choices – I was used to using Visual Studio for C++ and Eclipse for Java…but no one could point at the ‘one good Python development environment’ which I thought I was after.
Over the years I have tried several of the larger environments and I have found several ways of working depending on my task. In the follow-up post to this one I’ll cover those environments, here I’ll talk about features that you might be looking for in a good development environment.
The following points are important to me – but you may disagree. I figure it is more useful to put these ideas out here and I’ll let you leave comments (please do, ShowMeDo is all about sharing experience).
Here I will talk about IDEs (Integrated Development Environments), I won’t discuss text-editors and non-IDE environments (not enough space – but you feel free to leave a comment).
Here are the features that I find most useful in IDEs (like Wing, PyDev, SPE and Komodo):
Code assistance – automatic indentation is really useful, as is auto-completion (so you don’t have to type every character of every word – saves typos). Most Python development environments have these features.
Navigation – tools to let you jump to definitions, tool-tips showing function documentation and arguments, displays to show the layout of classes and modules. Most Python tools have some or all of these features.
Example – see an overview of good navigation tools and code assistance inside my Wing video and some neat features of PyDev in Fabio’s PyDev Extensions video. For a more in-depth introduction see software-development using Wing and using PyDev.
Refactoring tools – Essential in the Java world, not so essential but nice to have for Python work (PyDev has them and SPE should have soon, Wing and Komodo are missing support).
See this ShowMeDo to learn about code-assistance and refactoring with PyDev.
Debugging – a good graphical debugger is (IMHO) the main reason for having a graphical development environment. At a minimum the debugger should let you position break-points and inspect the state of current variables.
There are two great examples of good debug tools at ShowMeDo. First – learn how to debug a program inside PyDev and second see this free video on the open-source WinPDB (bundled with SPE) as we work through a debug exercise.
Interactive debug environment – a more advanced feature is an interactive Python prompt that is active whilst you debug your program – Wing has this, I think PyDev’s Extensions allow this too.
I don’t know of other tools that allow this. This can be handy if you want to evaluate expressions and call functions whilst you are in the middle of a debug session.
GUI development tools – some IDEs include a GUI developer. This isn’t something that I’ve tried but I imagine that there’s a market for it. Perhaps IDE authors could leave a comment saying if their tool provides good GUI-writing support?
In the follow-up post I’ll discuss my common work environments and link to other tools that you may want to see.
Learn to write Python software using our python tutorial videos – most are free, some are in our Club.subscribe to my RSS feed!