Get Going with Python 2: Python Development Environments (IDEs) part 1

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.

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.

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.

About ShowMeDo:

Learn to write Python software using our python tutorial videos - most are free, some are in our Club.

Club ShowMeDo is aimed at new and intermediate Python programmers, our specially-crafted screencast tutorials are aimed directly at getting you to learn Python the easy way.

4 Responses to “Get Going with Python 2: Python Development Environments (IDEs) part 1”

  1. ShowMeDo Blog » Blog Archive » Get Going with Python 1: Getting a Feel for the Language Says:

    [...] Python Development Environments (IDEs) [...]

  2. ShowMeDo Blog » Blog Archive » Choosing a Python IDE Says:

    [...] [Note - Python Development Environments Part 1 and Part 2 should also be interesting to you] Deciding on a Python IDE can take time and a lot of effort. There are lots of things to look for including good ergonomics and a good set of tools. You will probably be looking for a debugger, also syntax high-lighting and automatic indentation. More advanced features might include support for refactoring tools and source-code control. [...]

  3. ShowMeDo Blog » Blog Archive » Get Going with Python 3: Under the Hood - Objects and Debugging Says:

    [...] Python Development Environments (IDEs) parts 1 and 2 [...]

  4. ShowMeDo Blog » Blog Archive » Get Going with Python 2: Python Development Environments (IDEs) part 2 Says:

    [...] ShowMeDo Blog ShowMeDo News and Thoughts « Get Going with Python 2: Python Development Environments (IDEs) part 1 New ShowMeDo: Secure File Transfer With WASTE » [...]

Leave a Reply

You must be logged in to post a comment.