Pythonic IDEs: Субъективный взгляд на IDLE

Со времени написания прошлой заметки прошло более трех месяцев. Всё это время я пользовался IDLE. О своих впечатлениях и расскажу

IDLE хороша тем, что доступна практически везде и без дополнительных усилий. Написана она на Tkinter и к ней приложил руку ГвР. Про Tk я слышал мнение, что он одинаково плохо выглядит на всех платформах. На самом деле, просто другие toolkit’ы стали выглядеть лучше, а Tk какой был, такой и остался. И вот в сравнении с “глянцевыми” GTK/Qt он выглядит “серым”. В любом случае, с внешним видом можно мириться, если функциональность на высоте.

Насчет функциональности небольшое отступление. Что нужно для того, чтобы IDE/редактор мог называться Pythonic? По-порядку:

  1. Уметь работать с отступами. Поскольку отступы — часть синтаксиса, то редактор просто обязан уметь: делать “правильные” отступы (по Python Style Guide это 4 пробела) и изменять уровень вложенности у блока текста.
  2. Уметь подсвечивать синтаксис. Не требую чего-то навороченного, хотя бы базовые возможности (выделение ключевых слов, строк, комментариев).
  3. Уметь работать с встроенной документацией (docstring). Иначе странно было бы называть инструмент предназначенным для работы с Python, если игнорируется такая мощная встроенная в язык функция.
  4. Уметь определять кодировку текста. Раз уж указывается кодировка исходного текста (PEP-263), то грех не брать ее из файла.

На мой взгляд, это необходимые условия. Различного рода дополнительная функциональность (автодополнение названий функций/классов/методов/атрибутов/переменных, интеграция с системой контроля версий, интеграция с инструментами тестирования/рефакторинга) рассматривается мной как факультативная. Т.е. если она есть — хорошо, но в этом случае смотрю как она реализована, насколько удобно. Если же этих “фишек” нет, то и в минус записывать не буду.

Итак, “карточка” на IDLE:

  • Лицензия — PSFL v2
  • Требуемые дополнительные библиотеки — Tk (поправка: для Windows включена в дистрибутив Python)
  • Базовый функционал - полностью
  • Дополнительный функционал
    • автодополнение названий переменных (в версии 1.2)
    • обзор классов/функций
    • обзор директорий, в которых ищутся модули
    • контекст кода (показ ключевых конструкций выше по коду)
    • наличие отладчика

Из дополнительных “фишек” отмечу хороший алгоритм переноса данных внутри скобок: курсор переносится не на начало строки, а на позицию под открывающей скобкой. Понравилось еще, что IDLE “понимает”, что после return нужно возвращаться на один уровень вверх по вложенности. Из того что появилось в версии 1.2 и достаточно удобно — визуальный показ парности скобок. Всё это не killer features, но по-мелочи приятно.

Что касается общего впечатления: сразу стоит предупредить, что в ненастроенной *nix системе его могут испортить шрифты, поскольку зачастую в Tk они по умолчанию “кривоваты” (это касается, естественно, только кириллицы). В целом, у меня сложилось мнение, что IDLE не очень подходит к крупным проектам. Я не знаю, с чем это связано, но субъективно мне сложнее ориентироваться по коду внутри IDLE (и Class Browser тут скорее просто для галочки, реальной помощи от него я не ощутил), чем в большинстве других редакторов. По мне, так ниша IDLE — небольшие Python-программы, где код умещается на два-три экрана (т.е. где-то в районе 200 строк). Как уже сказал, навигация по более объемному коду вызывает некоторый дискомфорт.

Из недостатков, которые мне мешали, помню:

  • Постоянное попадание скрытых файлов/директорий в диалоге “Открыть/Сохранить файл”. С учетом того, что у меня в домашней директории их под 200 штук, это утомляло
  • Изредка, при запуске “долгоиграющих” процессов (например, twisted-приложений, или GUI), IDLE “замораживалась” (см. скриншот). При этом на Windows я с этим сталкивался чаще, чем на Linux.

В целом, для “IDE в поставке”, IDLE не плоха. Не “лучший выбор”, но твердая четвертка. По крайней мере, весь базовый функционал реализован вполне достойно. Я буду рассматривать IDLE как некий эталон (надо ж от чего-то отталкиваться) и остальные инструменты буду сравнивать уже с ней.

Вообще, это время я помимо IDLE, использовал PyDev на Windows и gvim на Linux, и пришел к выводу, что искать лучший (для себя) инструмент на все случаи жизни не особо разумно. Так что поиск разделился на две категории:

  1. быстрый инструмент для мелких скриптов:
  2. полный инструмент для крупных проектов:

Дальше совет тем, кто хочет использовать IDLE-1.2 (появилась в Py25) вместе с Py24.

Во-первых, нужно получить исходные тексты IDLE-1.2 с репозитария Python (я делаю это в Linux, в командной строке, Вы можете воспользоваться каким-нибудь Subversion-клиентом)

svn checkout http://svn.python.org/projects/python/branches/release25-maint/Lib/idlelib idlelib12

Чтобы не “ломать” инсталляцию Python, а также для возможности использовать предыдущую версию IDLE (если что-то пойдет не так), я ставлю IDLE-1.2 как пакет idlelib12, а не idlelib.

Далее, исходя из требований (запускаться на Py24, запускаться как пакет idlelib12), пришлось немного доработать IDLE. Патч можно посмотреть здесь, а здесь можно взять уже измененные исходные тексты IDLE-1.2.

Потом копируем “доработанную” IDLE в директорию, находящуюся в PYTHONPATH (либо добавляем нужную директорию к PYTHONPATH), я для этого использую /usr/local/lib/python2.4/site-packages и запускаем при помощи такого кода:

#!/usr/bin/pythonfrom idlelib12 import PyShellPyShell.main()

Если что-то не получается, пишите комментарии — будем разбираться вместе.

Подписаться Комментировать

Комментарии

15.10.2006 0:39 Юревич Юрий

Забыл сказать — следующий на очереди Eric , тем более не так давно появились первые снапшоты Eric4

15.10.2006 3:28 Юревич Юрий

сам в винде юзаю, в последних версиях выпадающие подсказки появились, только никак не пойму зачем options-code context%)

15.10.2006 10:34 Юревич Юрий

На мой взгляд это из разряда “интуитивно непонятных” и “потенциально бесполезных” вещей. Да, он показывает ключевой код выше по тексту (т.е. тот, который уже не видно), но в реальном использовании мне он ни разу не пригодился.

Вообще, у IDLE некоторые заявленные “фичи” (class browser, code context) на удивление бестолково сделаны, реальной пользы (для меня) - ноль.

29.03.2007 14:05 Юревич Юрий

IDLE действитель дурацко подвисает на twisted приложениях. По-этому пользуюсь eric3, но в нем дурной косяк — так и не нашел как прервать выполнение приложения в дебагере :) есть только рестарт :)

29.03.2007 15:42 Юревич Юрий

Twisted Matrix Lab, насколько знаю, использует emacs со своим модом . Я вообще не использую встроенных средств IDE (сейчас пользуюсь Eclipse+PyDev и IDLE) для запуска “долгоиграющих” процессов — только в консоли.

29.03.2007 19:00 Юревич Юрий

Emacs это здорово, но видимо я не в те времена (слишком поздно) взялся за linux что б заставить себя изучить Emacs и/или vim =)

Форма комментирования для «Pythonic IDEs: Субъективный взгляд на IDLE»

Обязательное поле. Не больше 30 символов.

Обязательное поле

Пожалуйста, введите символы, которые вы видите на изображении

16.05.2007 23:05 Юревич Юрий

[…] 3. Программирование, редактирование файлов — Scribes (django, css, python, html) Установка: из исходника или .deb пакета С чем-чем, а с нормальным python редактором в Ubuntu проблемы. Вкратце: Eclipse + pyDev гроздок, для больших проектов может и нечего, но для проектов с кодом не превышающим 200-500 строк излишен. П.С.:програмить на Java под Eclipse одно удовольствие. Gedit редактор неплохой, но у меня были проблемы с неправильным отображением отступов, не которые просто не отображал, так же наблюдаются проблемы со скоростью работы. SPE что сразу не понравилось так это очень загруженный интерфейс, как-то это не по гномовски. IDLE довольно таки шустрый редактор, нормально работает с отступами, есть авто дополнение ключевых фраз. Из минусов могу отметить внешний вид, так сказать на любителя и пиксельные шрифты. Шрифты вроде исправить можно, но возни многовато, подробнее здесь Мой выбор Scribes. Плюсы минимальный интерфейс, работа с отступами, автодополнение, темплейты. Минусы долгое время загрузки(с каждой последущей версией код по-маленьку оптимизируют), отсутствие табов. Scribes в действие. […]