I’m not sure how I found it, but over the weekend I ran across
Rope, a Python IDE I hadn’t run into
before. Rope sets itself apart from other tools I’ve used lately
(including PyDev and Wing) by embracing a very functional approach to
development. This approach is visible from the start when you visit
their web page. There are no screenshots. Maybe they just haven’t
had time to put them up, but after playing with Rope, I don’t think they
should: it’s an editor with some advanced features, what do you need to
see? Instead the web page lists some of the things Rope tries to do
well: code-completion, type inference and refactoring. Especially refactoring.
When you start Rope, you immediately notice its austere, functional
interface. Rope uses TkInter as
its GUI toolkit. TkInter isn’t going to win any beauty pageants on
any platform. But it does have an installed base as big as, well,
Python’s. The editor is what you’d expect from a basic editor: it does
syntax highlighting and uses Emacs-like key bindings for some tasks.
One difference that I noticed immediately is Rope’s idea of a Project.
Tools like Wing have explicit project files.
These files contain information about the project, and opening them
restores your working environment. Rope, on the other hand, takes the
view that a Project is just a directory that contains… stuff. This seems
very “Python-ic” in some ways: a package, after-all, is just a
directory with a bit of special sauce in the form of __init__.py, so
why shouldn’t a Project (which might be thought of as a collection of
packages and modules) be a directory as well? Opening a project simply
means selecting a directory tree which contains your project’s files.
From there you can browse the project tree, and pick files to open (or
create new ones, of course).
So I really like Rope. I’m not sure it’ll replace Emacs as my tool of
choice, but it doesn’t get in my way or gobble system resources, so I’ll
keep it around. Is Rope a mature tool? No. To really call itself an IDE
it needs some sort of debugging support, in my opinion. But it already
makes one hell of an editor.
date: | 2006-10-02 08:17:45 |
wordpress_id: | 447 |
layout: | post |
slug: | rope-a-new-python-ide |
comments: | |
category: | development |