NetBeans IDE for Python

netbeans-ide-for-python

Недавно вышла новая версия NetBeans IDE 6.5 и, в том числе, и сборка под названием NetBeans IDE for Python. Вообще с различными IDE для Python у меня как-то не складывается, и я в последнее время использую только редактор SciTe, но по возможностям мне нравится связка Eclipse + Pydev, но как же она тормозит… да и оперативку съедает только так. Не смотря на то, что NetBeans тоже написана на  Java, решил все-таки посмотреть что там к чему.

Как ни странно, оказалось, что IDE работает сравнительно шустро, и аппетиты к оперативке у нее умеренные – если открыть несколько проектов по одному файлу в каждом, то процесс занимает около 100 Мб. Поэтому я решил поподробнее познакомиться с этой IDE.

Общее впечатление

NetBeans IDE for Python netbeans 00 300x261

Вид главного окна NetBeans 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 немного погонял. Никаких претензий к нему нет, все очень удобно и понятно. В дереве проекта с помощью этого плагина показывается какие файлы изменились.

NetBeans IDE for Python netbeans svn 01 153x300

Дерево проекта с использованием плагина для SVN

Из контекстного меню для проекта можно выполнять основные операции с репозиторием SVN:

NetBeans IDE for Python netbeans svn 03 251x300

Меню для работы с SVN

NetBeans IDE for Python netbeans svn 02 300x217

Диалог для отправки изменений в репозиторий (commit)

Несколько неудобно, что при возникновении ошибки в скрипте, нельзя перескочить сразу на ошибочное место, приходится искать проблемную строку по ее номеру.

Проект можно или создавать с нуля, или из уже существующих исходников. Проект NetBeans IDE, к слову, состоит не из одного файла, а из целой папки с файлами, описывающие проект. Если создать проект из исходников, которые представляет собой рабочую копию для SVN, то программа это увидит и можно будет сразу пользоваться меню для контроля версий. К сожалению, в этой IDE нельзя запускать одиночные скрипты без создания проекта.

Редактор кода и отладчик

Первое что бросилось в глаза при открытии старого исходника – это кодировка Windows-1251 по умолчанию. Причем, в начале открытых файлов стоит директива #-*- coding: utf-8 -*-, которая означает, что исходник набран в кодировке UTF-8, но на такую мелочь, в отличие от SciTe, редактор не смотрит. К счастью, для проектов кодировку можно изменять в настройках. Что самое интересное, в справке разработчики обещают, что кодировка по умолчанию для проектов будет UTF-8, но у меня она стабильно была Windows-1251. Причем даже после того как я исправил кодировку проекта, IDE иногда все-равно пыталась открывать файл в виндовой кодировке. Обычно с этим можно бороться тем, что закрыть файл и открыть заново, обычно при втором открытии кодировка определяется правильно. А вообще проблем с русскими буквами нет в любой кодировке.

Подсказки по методам классов или функциям из модулей, скажем так, сыроваты. Во-первых, если явно указывать имя импортированного модуля, из которого хотелось бы вызвать функцию, то в списке будут все одноименные функции из разных установленных модулей:

NetBeans IDE for Python netbeans hint 03 300x144

Подсказки по функциям из модулей.

Подсказки по аргументам функции NetBeans не показывает, хотя пункт меню для этого присутствует, надеюсь, что этот баг исправят в ближайшем будущем. Есть возможность посмотреть документацию по функциям и методам, но среда, к сожалению, часто ошибаетсяв том, к какому из модулей отнести тот или иной метод. На следующем скриншоте вместо того, чтобы искать функцию plot() в модуле pylab, NetBeans показывает документацию по одноименной функции из PythonCard:

NetBeans IDE for Python netbeans hint 04 300x188

Здесь должна дыть документация по функции plot()

Кроме того, среда не показывает члены класса, объявленные в конструкторе. На следующем скриншоте в списке нет члена self.foo_param:

NetBeans IDE for Python netbeans 03 274x300

Подсказки по содержимому класса. В списке нет членов класса

Зато в NetBeans есть проверка кода на соответствие принятым нормам форматирования. Например, среда разработки показывает предупреждения, если имя класса начинается с маленькой буквы, а метод наоборот с заглавной, или если первый аргумент метода класса называется не self или cls, подчеркивает неиспользуемые переменные и импортированные модули. Правда, первый аргумент self у методов класса тоже подчеркивает как неиспользуемый, если к нему явно не обращаться внутри метода.

На следующем скриншоте показан код с четырьмя предупреждениями: имя класса должно начинаться с заглавной буквы, первый аргумент метода должен называться self или cls, имя метода должно начинаться с маленькой буквы и неиспользуемая переменная self.

NetBeans IDE for Python netbeans warnings 01

Код с предупреждениями

Все предупреждения отключаются. На следующем скриншоте показано окно настроек со списком таких предупреждений:

NetBeans IDE for Python netbeans 02 300x254

Окно настроек предупреждений

А еще в NetBeans есть инструмент для рефакторинга, хоть он и не всегда справляется со своими обязанностями, но даже то, что он умеет уже облегчает программирование. А умеет он только переименовывать классы, методы и переменные. Перед применением рефакторига показывается сравнение файлов до него и после:

NetBeans IDE for Python netbeans refactor 02 300x170

Показ изменений при рефакторинге

В качестве приятного дополнения к рефакторингу можно считать то, что редактор подсвечивает в коде все места, где встречается переменная, на которой стоит курсор:

NetBeans IDE for Python netbeans refactor 01 300x223

Кстати, рефакторинг так и не справился с переименованием члена self.foo_param из этого участка кода, он настойчиво предлагал вместо него переименовать метод __init__.

Еще в среде есть встроенный отладчик. Сам по себе отладчик вроде ничего, точки останова ставятся, по одному шагу скрипт выполняется, локальные переменные показываются, но вот обзор переменных через окно Watches у меня почему-то так и не заработало.

NetBeans IDE for Python netbeans debug 00 300x278

Отладчик и окно Watches

А вот как выглядит окно локальных переменных

NetBeans IDE for Python netbeans debug 01 187x300

Отладчик и окно с локальными переменными

Еще к приятным возможностям среды можно отнести наличие шаблонов для кусков кода и сокращения для их вызовов, встроенный менеджер задач, который ищет в проекте комментарии вида # TODO: bla-bla-bla, а затем выводит их в отдельный список. Есть встроенная консоль для Python.

Итого

Если кратко, то мне NetBeans IDE for Python понравилась. По крайней мере работать со скриптами, состоящими из нескольких файлов в ней намного удобнее, чем в SciTe. По возможностям IDE не дотягивает до связки Eclipse + Pydev, но Eclipse так тормозит, что пользоваться им с одним гигом оперативки практически невозможно. У NetBeans есть еще глюки, точнее есть они у плагина для разработки на Python, но хочется верить, что он будет развиваться и количество глюков уменьшаться.

Скачать NetBeans IDE for Python можно отсюда.

Похожие записи

Пожалуйста, оцените запись

1 Star2 Stars3 Stars4 Stars5 Stars (7 votes, average: 4.14 out of 5)
Loading ... Loading ...

Комментарии (20)

  1. falko:

    Не знаю не знаю, первые 5 мин работы показали что он тормознутее эклипса, если еще учесть что мой эклипс обвешен кучей плагинов. Пусть допиливают, посмотрю через годик, а пока ковыряю eric более менее вменяемая вещь в контексте qt

  2. Jenyay:

    Странно, у меня эклипс чуть ли не пару минут запускается только, а NetBeans секунд 10.

  3. Magik:

    А вот эту штуковину не пробовал? http://wingware.com/
    При наличии opensource проекта они высылают регистрацию для PRO версии бесплатно (правда запрос надо отправлять по факсу, что несколько необычно). Я получил бесплатную версию, но у меня настолько простые скрипты что Kate мне пока хватает за глаза, интересно было бы услышать мнение человека который пишет сложные приложения и имеет опыт работы с IDE.

  4. Jenyay:

    Не, не пробовал, надо будет посмотреть. В принципе, опенсорсный проект на питоне у меня есть, но не знаю стоит ли возиться с факсами и все такое прочее.

  5. Magik:

    Там дают без гемороев 30 дневный триал, в принципе по нему уже должно быть понятно стоит ли возиться с факсами )

  6. Jenyay:

    Уже качаю. Если не забуду и прога не потеряется в свалке скаченного, то гляну, как руки дойдут :)

  7. Psixo:

    «»"процесс занимает около 100 Мб»"»
    На этом обзор можно закончить. Эклипс у меня ест на 20 метров меньше,а SciTE, который предпочитаю, вообще в 12 раз меньше.
    100Мб — это слишком,как и 80 для эклипса.

  8. Jenyay:

    Psixo,

    В большинстве случаев я тоже использую SciTe, но хотелось бы полноценной IDE.

  9. Psixo:

    Я бы предпочёл IDE для Питона на основе Code::Blocks :) у него хоть потребление оперативки не такие наглые. Сам уже устал искать подходящие системы для разработки на Python, что только не испробовал,пока не остановился на простом SciTE.

  10. gavenkoa:

    SciTe пробывал использовать очень давно (4 года назад).

    Чуть лутьше блокнота, пробывал сделать свою подсветку синтаксиса – не получилось,
    за это время немного internal насмотрелся – сырой был редактор, число фич – почти ноль.

    Для таких целей люди используют NotePad++.

    В качестве рабочей лошидки использую Emacs, уж навороченей редактора точно не будет!

    Правда освоение Emacs потребует недельки 2.

  11. Psixo:

    NotePad++ построен на той же движке что и SciTE, и никаких приемуществ я в нем не заметил ;)

  12. gavenkoa:

    Угу http://en.wikipedia.org/wiki/Scintilla_(editing_component)

    Первоначальное разочарование в редакторе заслепило мне глаза!

    $ sudo apt-get install scite

    Поигрался, единственное что впечатлило (ну да, возможности посветки в Far и Mc есть) -
    линии указывающие отступы от левого края для различных вложений for/while/case!

    Как оно на английском то называется? В Имакс хотелось бы прикрутить.

  13. gavenkoa:

    Ага еще компактность редактора впечатляет:

    http://www.scintilla.org/SciTEDownload.html

    * zip format (1750K) commonly used on Windows
    * tgz format (1500K) commonly used on Linux and compatible operating systems

  14. gavenkoa:

    линии указывающие отступы от левого края для различных вложений for/while/case это – indentation guides.

    Соответствующие параметры:

    view.indentation.guides
    view.indentation.examine
    view.indentation.examine.filepattern
    highlight.indentation.guides

  15. Богдан BoGdaN:

    NetBeans больше понравился, чем Eclipse, при малом обьеме памяти у компа работает шустрее, хотя все равно джава тормозит.

  16. Jenyay:

    Ага, но я потом все-равно остался на SciTe, а потом перешел на Vim.

  17. ks1v:

    И до сих пор на виме? а то я озаботился выбором IDE, читаю/смотрю/пробую

  18. Jenyay:

    Ага, на виме. Тут недавно к нему еще и рефакторинг прикрутил с помощью ropevim.

  19. ks1v:

    Надеюсь не все пути идут к нему, я ведь только два года назад с него слез.

  20. gavenkoa:

    @ks1v
    > Надеюсь не все пути идут к нему, я ведь только два года назад с него слез.

    Куда слез? На что?

Оставить комментарий

Subscribe without commenting

М2М решения, спутниковая навигация на транспорте