LINUX.ORG.RU

Текстовый редактор/IDE для Python


0

1

Посоветуйте сабж со следующими возможностями:

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

Не обязательно, но желательо: интеграция с PyQt, чтобы примерно как в QtCreator. Главное — чтобы облегчало добавление в проект форм Qt Designer, а то вручную много писать приходится.

☆☆☆☆☆

Eclipse + PyDev или, если нужно тончее - ActiveState Komodo Edit

shty ★★★★★ ()
Ответ на: комментарий от shty

shty> Eclipse + PyDev

Не разобрался с классами. Если я создаю переменную в функции _init_ и сохраняю ее в self.имя, то из другой функции того же класса ее не видно (т. е. автодополнение не работает). Это баг эклипса или я что-то пропустил?

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

> Это баг эклипса или я что-то пропустил?

Это точно не баг. Недоработка - может быть, но не баг. Питон - динамически типизированный язык, и присваивание self.var ничего не гарантирует.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

tailgunner> Питон - динамически типизированный язык, и присваивание self.var ничего не гарантирует.

А что гарантирует? Я не понял, как в питоне гарантированно объявить в классе переменную определенного типа без ее инициализации. Т. е. написать имя переменной для доступа к ней как self.var, но присваивать ей значение уже позже, в функции.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

Кхм... по-моему, тебе нужно почитать какой-нибудь учебник. Возможно, ты имеешь в виду __slots__, но я тебя не понял.

tailgunner ★★★★★ ()
Ответ на: комментарий от tailgunner

tailgunner> Кхм... по-моему, тебе нужно почитать какой-нибудь учебник. Возможно, ты имеешь в виду __slots__, но я тебя не понял.

Туториалы по питону говорят, что переменные - члены класса создаются записью var = 0.12345 в классе. А если я хочу создать переменную var, но не присваивать ей значения прямо при создании класса? Если напишу var = [], то не будет работать автодополнение, потому что у этой переменной нет нужного типа.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

> Если я создаю переменную в функции _init_ и сохраняю ее в self.имя, то из другой функции того же класса ее не видно

Прекрасно видно, у меня по крайне мере

namezys ★★★★ ()
Ответ на: комментарий от vurdalak

Все будет работать. Автодополнение не всегда подхватывает тип переменной, но в случае [], {} подхватит

namezys ★★★★ ()
Ответ на: комментарий от vurdalak

Если я создаю переменную в функции _init_ и сохраняю ее в self.имя, то из другой функции того же класса ее не видно (т. е. автодополнение не работает). Это баг эклипса или я что-то пропустил?

УМВР

shty ★★★★★ ()
Ответ на: комментарий от namezys

Ладно, буду пробовать дальше. Может я ошибся где-то.

vurdalak ★★★★★ ()
Ответ на: комментарий от vurdalak

А если я хочу создать переменную var, но не присваивать ей значения прямо при создании класса?

1. зачем?

2. какой тип она будет иметь, как Вы думаете?

shty ★★★★★ ()

вообще есть мнение, что этот вопрос надо внести в FAQ, ибо спрашивают регулярно

shty ★★★★★ ()

Кхе-кхе
Но пока еще в стадии разработки. :)
Всем твоим требованием соответствует.

zJes ★★ ()

из-за тонны редакторов для питона, так трудно найти лучший... Лучше бы все просто емакс допилили :)

Кстати, AlexOtt вчера отрекомендовал в твиттере: https://github.com/fgallina/python.el

Zubchick ()
Ответ на: комментарий от Zubchick

Лучше бы все просто емакс допилили :)

Для питонистов слишком противоестественно писать на чем-то кроме питона.

baverman ★★★ ()
Ответ на: комментарий от tailgunner

> Кхм... по-моему, тебе нужно почитать какой-нибудь учебник. Возможно, ты имеешь в виду __slots__, но я тебя не понял.

__slots__ немного для другого.

anonymous ()

Так нужен автокомплит, который берёт символы из модулей? Тогда либо PyCharm, либо Eclipse+PyDev/Aptana(это сборка Eclipse+PyDev+всё для вебдева).
Про PyCharm можешь почитать здесь: http://blog.soulrobber.ru/2011/01/26/rubymine-end/ . Думаю, этого будет достаточно для того, чтобы ты не тратил время на PyCharm.

ТОЛЬКО автокомплит PyDev и PyCharm умеет то, что ты хочешь.
Умеет и Rope, но это другая история, да и используется он только в Vim и Emacs, а тебе, как я понимаю, начинающему разработчику, нужно что-то для начала.
Автокомплит в Komodo IDE, Geany и обычном модуле Python в Emacs(да, есть и необычные, более совершенные), как и во многих редакторах с замахом на IDE, просматривает все локальные имена на наличие совпадений, а это не совсем то, что ты хочешь.

PyQt уже можешь закапывать, т.к. уже вышла пятая бета PySide 1.0.0 и есть ppa.
С Qt, увы, ни одна из IDE не работает, кроме QtCreator и модуля для Eclipse, но с PySide идёт утилита, которая преобразовывает файлы ui(которые генерить можно через QtDesigner) в python-код с использованием PySide.

tia ()
Ответ на: комментарий от vurdalak

> Я не понял, как в питоне гарантированно объявить в классе переменную определенного типа без ее инициализации. Т. е. написать имя переменной для доступа к ней как self.var, но присваивать ей значение уже позже, в функции.

А почему хочется без инициализации? Насколько я знаю, __dict__ не умеет key без value, поэтому, наверное, никак нельзя. Ну только если не смотреть в сторону всяких __setattr__ и дескрипторов, но у них class allocation, а не instance.

Чем self.var = None не устраивает?

anonymous ()

> Главное: автодополнение, чтобы оно брало слова не только из текущего файла, а из стандартной библиотеки python и изо всех импортированных в редактируемом файле модулей.

rope умеет ^_^.

anonymous ()
Ответ на: комментарий от tia

Много заглавных букв на ветер. Иди почитай матчасть. :)

zJes ★★ ()
Ответ на: комментарий от zJes

Матчасть? Ты знаешь что такое «матчасть»?
Тебе просто захотелось меня послать куда-нибудь?

tia ()
Ответ на: комментарий от tia

Знаю, и про rope и про PyQt, а вот ты совсем не в курсе. :)

zJes ★★ ()
Ответ на: комментарий от zJes

Читать умеешь? Если да, то перечитай. Я и про Rope, и про PyQt написал.

tia ()
Ответ на: комментарий от tia

> Я и про Rope, и про PyQt написал.

Как всегда написал, как всегда много, как всегда чушь.

anonymous ()
Ответ на: комментарий от tia

Ходячее ололо. Позор на голову сообществу питонщиков. Товарищи, это не наш мальчик!

baverman ★★★ ()
Ответ на: комментарий от tia

Читаю,

ТОЛЬКО автокомплит PyDev и PyCharm умеет то, что ты хочешь.


4.2, в некотором отношении, тот же пресловутый rope дает более объективный комплит.

Умеет и Rope, но это другая история, да и используется он только в Vim и Emacs


4.2, их больше...

PyQt уже можешь закапывать, т.к. уже вышла пятая бета PySide 1.0.0


4.2, и что? PySide уже кросс? И охватывает весь функционал что есть в Qt и PyQt? Нет?

PySide идёт утилита, которая преобразовывает файлы ui(которые генерить можно через QtDesigner) в python-код с использованием PySide.


Киллер фича :), PyQt тоже имеет утилиты.

zJes ★★ ()
Ответ на: комментарий от baverman

> Ходячее ололо. Позор на голову сообществу питонщиков. Товарищи, это не наш мальчик!

Нет, он, слава ТНБ, переключился на руби.

anonymous ()
Ответ на: комментарий от anonymous

Анонимус как всегда пишет «всё говно», всех обкладывает говном и не может ничего сказать по сути.

tia ()
Ответ на: комментарий от zJes

>4.2, в некотором отношении, тот же пресловутый rope дает более объективный комплит.
4.2, т.к. Rope имеет проблемы с автокомплитом с других модулей.
Если ты считаешь что я соврал на счёт PyDev и PyCharm, то советую выпиливаться.

4.2, их больше...

4.2. Rope используется он нормально только в Vim и Emacs. Может и есть ещё какие редакторы, но они не популярны и по остальному функционалу проигрывают.

4.2, и что? PySide уже кросс? И охватывает весь функционал что есть в Qt и PyQt? Нет?

Иди почитай правила, а потом тыкай везде 4.2. PySide охватывает _весь_ Qt, даже QtQuick, даже то, чего в PyQt нет.

Киллер фича :), PyQt тоже имеет утилиты.

Наличие утилит не является фактом наличия нужного функционала. Я сказал про наличие этой утилиты как про удобство работы с Python и Qt.

Откуда ты пришёл? Уходи, ты здесь не нужен.

tia ()
Ответ на: комментарий от anonymous

Я использую и Ruby, и Python. Не внимательно ты следишь за мной.

tia ()
Ответ на: комментарий от tia

Мда, нагловатый молодой человек.

PySide охватывает _весь_ Qt


Даже проверять не буду. :) Последний раз когда интересовался (полгода назад), было частичное покрытие даже QtCore.

4.2, т.к. Rope имеет проблемы с автокомплитом с других модулей.


Расскажи мне еще, а то вдруг я что-то неправильно делаю?

Я сказал про наличие этой утилиты как про удобство работы с Python и Qt.


Ты так пишешь, что такой фичи нет нигде... ппц.

zJes ★★ ()
Ответ на: комментарий от zJes

Глянул вдоль на PiSide, да, уже лучше, но опять таки нет 3 питона. :)
Посмотрел на биндинги, лучше бы не смотрел. :(

zJes ★★ ()
Ответ на: комментарий от zJes

3ий Python особо никому не нужен. Можешь и не искать биндинги для тройки. Используй PySide и не бойся.

tia ()
Ответ на: комментарий от tia

> 3ий Python особо никому не нужен.

Ну конечно, еще одно заявление. :)

Можешь и не искать биндинги для тройки.


Не ищу, я смотрел генерацию биндингов к с++ средствами PySide, после простоты и удобства sip-а как то не в какие ворота. Просто скажи вот зачем мне переходить вдруг на PySide? Все проекты которые делаю - GPL, меня никто не огораживает, чтобы ради LGPL вдруг все бросить, включая 3 питон, простого и нормально работающего деплоя проектов и переходить на PySide?

zJes ★★ ()
Ответ на: комментарий от zJes

>Ну конечно, еще одно заявление. :)
Ой, просто продолжай жить в своём замкнутом мире и верить что ты один.

Не ищу, я смотрел

Судя по твоей «адекватности», ты не мог смотреть, ты мог только придираться к словам.

tia ()
Ответ на: комментарий от anonymous

А почему хочется без инициализации?

Потому что если инициализировать QWidget в классе до того, как в основной программе создаю QApptication, то он ругается.

Чем self.var = None не устраивает?

Не пробовал, спасибо.

vurdalak ★★★★★ ()
Ответ на: комментарий от zJes

>Кхе-кхе

Но пока еще в стадии разработки. :)

Всем твоим требованием соответствует.



А как с наименьшим количеством бубноплясок запустить его на Ubuntu 10.10? Через python 2.6 естественно не запускается, а python3 почему-то не видит модуля PyQt4.

Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от Ttt

И вообще, сорри, рано немного. :(
Я там сейчас немного код перетряхиваю.
Хотя, конечно, если ты ниндзя, был бы хорошо за баг репорты.

zJes ★★ ()
Ответ на: комментарий от zJes

В репозитории вроде только одна версия, котроая вроде как для 2.

Ttt ☆☆☆☆☆ ()
Ответ на: комментарий от marvin_yorke

>pycharm неплохо, но небесплатно

Вроде написано, что для opensource-проектов бесплатно. Но что проприетарщина — плохо, поэтому ставлю в конец очереди.

Ttt ☆☆☆☆☆ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.