NetBeans IDE for Python
Недавно вышла новая версия NetBeans IDE 6.5 и, в том числе, и сборка под названием NetBeans IDE for Python. Вообще с различными IDE для Python у меня как-то не складывается, и я в последнее время использую только редактор SciTe, но по возможностям мне нравится связка Eclipse + Pydev, но как же она тормозит… да и оперативку съедает только так. Не смотря на то, что NetBeans тоже написана на Java, решил все-таки посмотреть что там к чему.
Как ни странно, оказалось, что IDE работает сравнительно шустро, и аппетиты к оперативке у нее умеренные — если открыть несколько проектов по одному файлу в каждом, то процесс занимает около 100 Мб. Поэтому я решил поподробнее познакомиться с этой IDE.
Общее впечатление
После установки NetBeans IDE обнаружил установленные у меня Python 2.4 и 2.5, а так же, видно,прилагающийся к самой среде Jython 2.5b0+. Из интереса поставил после еще Python 2.6 и 3.0 rc3, из который среда обнаружила только питон 2.6, а 3.0 или не нашла, или, что более вероятно, проигнорировала. Вообще сразу после установки программы все в ней было работоспособно, ничего подправлять напильником не пришлось.
После создания проекта, среда начала искать и парсить установленные модули в той версии Python, на которую рассчитан новый проект (версия питона выбирается при создании проекта). На поиск модулей в голом Python 2.6 NetBeans IDE понадобилось примерно минуту ли две, а вот на Python 2.5, для которого у меня установлены wxPython, numpy, pylab (он же matplotlib) и еще несколько небольших библиотек, ушло 8 минут. Но приятно, что во время поиска установленных модулей сама среда полностью работоспособна за исключением подсказок по методам и членам классов, что не удивительно, ведь их список еще не готов.
По умолчанию были установлены плагины для трех систем контроля версий: SVN, CVS и Mercurial. Плагины для двух последних систем я отключил за ненадобностью, а плагин для SVN немного погонял. Никаких претензий к нему нет, все очень удобно и понятно. В дереве проекта с помощью этого плагина показывается какие файлы изменились.
Из контекстного меню для проекта можно выполнять основные операции с репозиторием SVN:
Несколько неудобно, что при возникновении ошибки в скрипте, нельзя перескочить сразу на ошибочное место, приходится искать проблемную строку по ее номеру.
Проект можно или создавать с нуля, или из уже существующих исходников. Проект NetBeans IDE, к слову, состоит не из одного файла, а из целой папки с файлами, описывающие проект. Если создать проект из исходников, которые представляет собой рабочую копию для SVN, то программа это увидит и можно будет сразу пользоваться меню для контроля версий. К сожалению, в этой IDE нельзя запускать одиночные скрипты без создания проекта.
Редактор кода и отладчик
Первое что бросилось в глаза при открытии старого исходника — это кодировка Windows-1251 по умолчанию. Причем, в начале открытых файлов стоит директива #-*- coding: utf-8 -*-, которая означает, что исходник набран в кодировке UTF-8, но на такую мелочь, в отличие от SciTe, редактор не смотрит. К счастью, для проектов кодировку можно изменять в настройках. Что самое интересное, в справке разработчики обещают, что кодировка по умолчанию для проектов будет UTF-8, но у меня она стабильно была Windows-1251. Причем даже после того как я исправил кодировку проекта, IDE иногда все-равно пыталась открывать файл в виндовой кодировке. Обычно с этим можно бороться тем, что закрыть файл и открыть заново, обычно при втором открытии кодировка определяется правильно. А вообще проблем с русскими буквами нет в любой кодировке.
Подсказки по методам классов или функциям из модулей, скажем так, сыроваты. Во-первых, если явно указывать имя импортированного модуля, из которого хотелось бы вызвать функцию, то в списке будут все одноименные функции из разных установленных модулей:
Подсказки по аргументам функции NetBeans не показывает, хотя пункт меню для этого присутствует, надеюсь, что этот баг исправят в ближайшем будущем. Есть возможность посмотреть документацию по функциям и методам, но среда, к сожалению, часто ошибаетсяв том, к какому из модулей отнести тот или иной метод. На следующем скриншоте вместо того, чтобы искать функцию plot() в модуле pylab, NetBeans показывает документацию по одноименной функции из PythonCard:
Кроме того, среда не показывает члены класса, объявленные в конструкторе. На следующем скриншоте в списке нет члена self.foo_param:
Зато в NetBeans есть проверка кода на соответствие принятым нормам форматирования. Например, среда разработки показывает предупреждения, если имя класса начинается с маленькой буквы, а метод наоборот с заглавной, или если первый аргумент метода класса называется не self или cls, подчеркивает неиспользуемые переменные и импортированные модули. Правда, первый аргумент self у методов класса тоже подчеркивает как неиспользуемый, если к нему явно не обращаться внутри метода.
На следующем скриншоте показан код с четырьмя предупреждениями: имя класса должно начинаться с заглавной буквы, первый аргумент метода должен называться self или cls, имя метода должно начинаться с маленькой буквы и неиспользуемая переменная self.
Все предупреждения отключаются. На следующем скриншоте показано окно настроек со списком таких предупреждений:
А еще в NetBeans есть инструмент для рефакторинга, хоть он и не всегда справляется со своими обязанностями, но даже то, что он умеет уже облегчает программирование. А умеет он только переименовывать классы, методы и переменные. Перед применением рефакторига показывается сравнение файлов до него и после:
В качестве приятного дополнения к рефакторингу можно считать то, что редактор подсвечивает в коде все места, где встречается переменная, на которой стоит курсор:
Кстати, рефакторинг так и не справился с переименованием члена self.foo_param из этого участка кода, он настойчиво предлагал вместо него переименовать метод __init__.
Еще в среде есть встроенный отладчик. Сам по себе отладчик вроде ничего, точки останова ставятся, по одному шагу скрипт выполняется, локальные переменные показываются, но вот обзор переменных через окно Watches у меня почему-то так и не заработало.
А вот как выглядит окно локальных переменных
Еще к приятным возможностям среды можно отнести наличие шаблонов для кусков кода и сокращения для их вызовов, встроенный менеджер задач, который ищет в проекте комментарии вида # TODO: bla-bla-bla, а затем выводит их в отдельный список. Есть встроенная консоль для Python.
Итого
Если кратко, то мне NetBeans IDE for Python понравилась. По крайней мере работать со скриптами, состоящими из нескольких файлов в ней намного удобнее, чем в SciTe. По возможностям IDE не дотягивает до связки Eclipse + Pydev, но Eclipse так тормозит, что пользоваться им с одним гигом оперативки практически невозможно. У NetBeans есть еще глюки, точнее есть они у плагина для разработки на Python, но хочется верить, что он будет развиваться и количество глюков уменьшаться.
Скачать NetBeans IDE for Python можно отсюда.
PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.
falko:
Не знаю не знаю, первые 5 мин работы показали что он тормознутее эклипса, если еще учесть что мой эклипс обвешен кучей плагинов. Пусть допиливают, посмотрю через годик, а пока ковыряю eric более менее вменяемая вещь в контексте qt
29 ноября 2008, 8:45 ппJenyay:
Странно, у меня эклипс чуть ли не пару минут запускается только, а NetBeans секунд 10.
29 ноября 2008, 10:46 ппMagik:
А вот эту штуковину не пробовал? http://wingware.com/
7 декабря 2008, 2:38 ппПри наличии opensource проекта они высылают регистрацию для PRO версии бесплатно (правда запрос надо отправлять по факсу, что несколько необычно). Я получил бесплатную версию, но у меня настолько простые скрипты что Kate мне пока хватает за глаза, интересно было бы услышать мнение человека который пишет сложные приложения и имеет опыт работы с IDE.
Jenyay:
Не, не пробовал, надо будет посмотреть. В принципе, опенсорсный проект на питоне у меня есть, но не знаю стоит ли возиться с факсами и все такое прочее.
7 декабря 2008, 3:36 ппMagik:
Там дают без гемороев 30 дневный триал, в принципе по нему уже должно быть понятно стоит ли возиться с факсами )
7 декабря 2008, 3:50 ппJenyay:
Уже качаю. Если не забуду и прога не потеряется в свалке скаченного, то гляну, как руки дойдут 🙂
7 декабря 2008, 4:05 ппPsixo:
«»»процесс занимает около 100 Мб»»»
18 декабря 2008, 12:13 дпНа этом обзор можно закончить. Эклипс у меня ест на 20 метров меньше,а SciTE, который предпочитаю, вообще в 12 раз меньше.
100Мб — это слишком,как и 80 для эклипса.
Jenyay:
Psixo,
В большинстве случаев я тоже использую SciTe, но хотелось бы полноценной IDE.
18 декабря 2008, 9:12 дпPsixo:
Я бы предпочёл IDE для Питона на основе Code::Blocks 🙂 у него хоть потребление оперативки не такие наглые. Сам уже устал искать подходящие системы для разработки на Python, что только не испробовал,пока не остановился на простом SciTE.
19 декабря 2008, 5:44 дпgavenkoa:
SciTe пробывал использовать очень давно (4 года назад).
Чуть лутьше блокнота, пробывал сделать свою подсветку синтаксиса — не получилось,
за это время немного internal насмотрелся — сырой был редактор, число фич — почти ноль.
Для таких целей люди используют NotePad++.
В качестве рабочей лошидки использую Emacs, уж навороченей редактора точно не будет!
Правда освоение Emacs потребует недельки 2.
22 февраля 2009, 11:13 ппPsixo:
NotePad++ построен на той же движке что и SciTE, и никаких приемуществ я в нем не заметил 😉
23 февраля 2009, 7:05 ппgavenkoa:
Угу http://en.wikipedia.org/wiki/Scintilla_(editing_component)
Первоначальное разочарование в редакторе заслепило мне глаза!
$ sudo apt-get install scite
Поигрался, единственное что впечатлило (ну да, возможности посветки в Far и Mc есть) —
линии указывающие отступы от левого края для различных вложений for/while/case!
Как оно на английском то называется? В Имакс хотелось бы прикрутить.
24 февраля 2009, 12:10 дпgavenkoa:
Ага еще компактность редактора впечатляет:
http://www.scintilla.org/SciTEDownload.html
* zip format (1750K) commonly used on Windows
24 февраля 2009, 12:12 дп* tgz format (1500K) commonly used on Linux and compatible operating systems
gavenkoa:
линии указывающие отступы от левого края для различных вложений for/while/case это — indentation guides.
Соответствующие параметры:
view.indentation.guides
24 февраля 2009, 12:31 дпview.indentation.examine
view.indentation.examine.filepattern
highlight.indentation.guides
Богдан BoGdaN:
NetBeans больше понравился, чем Eclipse, при малом обьеме памяти у компа работает шустрее, хотя все равно джава тормозит.
10 апреля 2009, 12:45 ппJenyay:
Ага, но я потом все-равно остался на SciTe, а потом перешел на Vim.
10 апреля 2009, 5:34 ппks1v:
И до сих пор на виме? а то я озаботился выбором IDE, читаю/смотрю/пробую
20 января 2012, 3:36 дпJenyay:
Ага, на виме. Тут недавно к нему еще и рефакторинг прикрутил с помощью ropevim.
20 января 2012, 9:03 дпks1v:
Надеюсь не все пути идут к нему, я ведь только два года назад с него слез.
20 января 2012, 4:02 ппgavenkoa:
@ks1v
> Надеюсь не все пути идут к нему, я ведь только два года назад с него слез.
Куда слез? На что?
21 января 2012, 1:46 дп