LINUX.ORG.RU

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


0

1

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

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

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

☆☆☆☆☆

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

shty> Eclipse + PyDev

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

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

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

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

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

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

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

vurdalak ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от 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

Читаю,

ТОЛЬКО автокомплит 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 ★★
()
Ответ на: комментарий от 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 ☆☆☆☆☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.