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

После установки 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Итого

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

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

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

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

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 10, средняя оценка: 4,10)
Загрузка...

комментариев 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
    > Надеюсь не все пути идут к нему, я ведь только два года назад с него слез.

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

Leave a comment

Subscribe without commenting