Geany
Geany is a lightweight code editor and IDE with support for a number of languages, including Python. It's available as an installable application across all the major operating systems, though it has some features that aren't available on Windows. Geany is available as a free download from www.geany.org:
- Large-project support: Fair
- Refactoring support: Mediocre
- Language exploration: Mediocre
- Code execution: Good
- Bells and whistles: Good
This is a screenshot of Geany showing one of several project plugins' sidebars, an open code file, project settings, and search and replace windows:
Geany's interface makes working with multiple concurrently open files a great deal easier than the same task would be in IDLE; each open file resides in a single tab in the UI, making multi-file editing quite a bit easier to deal with. It also supports a basic project structure even in its most basic installed configuration, and there are a few different project-oriented plugins that allow for easier/better management and visibility into the files of a project. What it lacks, generally, for large-project support is the ability to actually have multiple projects open at once, though multiple open files across different project source trees is supported. With some careful planning, and judicious configuration of individual projects' settings, it's possible to manage different execution requirements and even specific Python virtual environments across a set of related projects, though it requires some discipline to keep those well-isolated and efficient. As can be seen in the screen capture, Geany also provides settings for compilation and build/make commands at a project level, which can be very handy.
Geany's refactoring support is just slightly better than IDLE's, mostly because of its multi-file search and replace capabilities. There is no out-of-the box support for refactoring operations such as renaming a Python module file across an entire project or project set, leaving it as a wholly manual process, but with some care (and, again, discipline) even those aren't difficult to manage correctly, though they may be tedious and/or time consuming.
Geany's language exploration capabilities don't look like they should warrant as high a rating as the Mediocre that was given. Short of actually opening every Python namespace that's tied to a given project, which would at least allow exploration of those packages in the Symbols panel, there really isn't much obviously available in the way of support for digging into the underlying language. Geany's redemption here is a very robust auto completion capability. Once the first four characters of an identifiable language element are entered – whether that element is part of an open file in the project or part of an imported module – all of the element names that match the currently entered text are shown and selectable, and if the selected item is a function or method, the code hint that comes up for the item includes that item's argument signature.
Geany's code execution capabilities are pretty solid – slightly better than IDLE's in a few respects, if not enough so, or across enough areas, to warrant a higher rating. With some attention to needs and details early on in the project setup, it's possible to configure a given project's Execute settings to use a specific Python interpreter, such as one that's part of a specific virtual environment, and allow imports from other projects' virtual environment installations and code bases. The downside is that doing so does require a degree of planning, and it introduces additional complexity in managing the related virtual environments.
Geany's out-of-the box bells and whistles are comparable to those provided by IDLE, with a single significant improvement; a good number of readily-available plugins for a lot of common and useful tasks and needs.