Уведомления

Группа в Telegram: @pythonsu

#1 Март 5, 2013 18:36:49

andrey_mt
Зарегистрирован: 2013-03-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

Приветствую. Не так давно начал самостоятельно изучать Питон для написания расчетных программ по работе. Через некоторое время решил сменить простенький IDLE на что-нибудь более удобное. После чтения интернета выбор пал на Eclipse+PyDev (его также рекомендует Николай Прохоренок в книге “Python 3 и PyQt”).

В итоге под Windows 7 x64 было установлено следующее:
• Python 3.3
• Eclipse IDE for C/C++ Developers (Version: Juno Service Release 2, Build id: 20130225-0426)
• PyDev for Eclipse 2.7.1.2012100913

Собственно, после того, как разобрался с настройкой, убедился, что файлы с кодом, созданные в IDLE, корректно выполняются в новой среде, у меня возник вопрос: есть ли в Eclipse аналог консоли Python Shell из IDLE?
Консоль Eclipse (как и Python Shell) корректно выводит информацию по мере выполнения кода, принимает вводимые запрашиваемые программой данные, но после окончания работы программы уже не позволяет что-либо “делать”, а именно отсутствует возможность построкового ввода команд с завершением нажатием Enter как в Python Shell. То есть я не могу банально ввести имя переменной, нажать Enter и получить ее значение. Что весьма неудобно при проверке результатов, да и просто не позволяет быстро провести какой-нибудь эксперимент, проверить корректность синтаксиса ввода и т. д.

В поисках старой консоли я нашел кнопку Open Console в правой части окна консоли Eclipse. Она предоставляет четыре варианта действий, но ни одно из них не дает нужного результата, а выбор 4 PyDev Console вызывает новое окно, если выбрать в котором “Python Console”, то появляется сообщение:
import sys; print('%s %s' % (sys.executable or sys.platform, sys.version))
PyDev console: using default backend (IPython not available).


В общем, хочется иметь возможность построчного ввода команд как до, так и после выполнения кода.

Ну, и хочется услышать мнение опытных людей относительно самого Eclipse+PyDev как о среде разработки (предполагается использование для написания расчетных инженерных программ с графическим интерфейсом PyQt).

Спасибо.



Офлайн

#2 Март 6, 2013 00:28:14

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

andrey_mt
уж не пытаетесь ли вы сказать, что вам нужен debug???
устанавливайте точки остановок и запускайте ваш код не через Run (Ctrl+F11 по умолчанию), а через Debug(F11). И вам откроется фантастический мир контроля за ходом выполнения вашего кода.

Если что то не понятно пишите, я вам отвечу.

P.S. PyDev оч. хорошо настраивается (у вас, судя по скринам, он очень “голый”), например у вас не выводятся номер строки в коде, поройтесь в настройках внимательно, уделите этому 30 минут и вам станет комфортнее. Про IDLE вы забудете.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#3 Март 6, 2013 02:48:56

andrey_mt
Зарегистрирован: 2013-03-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

JOHN_16, боюсь, вы завышаете мои текущие потребности.

Поясню простым примером: когда читаю учебник по Питону, то требуется возможность быстрой проверки/тестирования банальной одиночного выражения, чтобы разобраться в его синтаксисе.
Вот изучаю я типы данных, задумался о том, что вернет Питон, если его спросить 0==0.0. Открыл Python Shell, набрал, нажал Enter, получил True.
Или запустил я на выполнение код, получил результат. Для оценки корректности вычислений хочу посмотреть значения переменных, значения которых не выводятся в консоль при работе программы. Так же в Python Shell набираю имя переменной, нажимаю Enter, получаю ее значение.

А как это же сделать в Eclipse?

Офлайн

#4 Март 6, 2013 03:09:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

Ну так вы же на скрине в первом посту открыли консоль. Туда и вводите



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Прикреплённый файлы:
attachment pydev.png (23,6 KБ)

Офлайн

#5 Март 6, 2013 12:01:08

andrey_mt
Зарегистрирован: 2013-03-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

Сам вызов консоли вроде заработал на домашней машине.

Но результаты работы программы всё равно не получается пощупaть руками (пример):

Создаю новый проект, в нем создаю новый файл File_1.py, пишу 4 строки кода и запускаю через Ctrl+F11, выбираю Python Run, в консоли получаю ответ 101.
Ввод текстовых команд в появившейся консоли невозможен.

Ладно, справа нажимаю на иконку Open Console, выбираю PyDev Console, а затем Console for currently active editor. Ага, появляется похожая на Python Shell консоль. Здорово, сейчас узнаю, чему равны a и b. Но после ввода имени переменной a получаю NameError.
А повторный запуск возвращает меня к первой картинке.




Отредактировано andrey_mt (Март 6, 2013 12:04:44)

Офлайн

#6 Март 7, 2013 02:20:14

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

andrey_mt
=) вы очень глубоко заблуждаетесь по поводу того как должна работать IDE и shell. Объясняю, IDE просто запускает скрипт, так как если бы вы запустили его из командной строки - это НОРМАЛЬНОЕ поведение, так и работают все программы.
Однако, если вы хотите полазить в памяти программы после ее выполнения (что является не нормальным и не стандартным поведением с точки зрения любой программы), то в помощь вам, нужно вызывать python с ключом -i, однако помните что он вернет вам состояние программы на момент ее окончания - если это простой скрипт, то вам это будет полезно, если это ООП, то тут могут возникнуть неудобства.

НО, еще раз повторюсь, debug в PyDEV даст вам куда больше возможностей.

Еще одно решение это вставка globals() и locals() в нужные фрагменты кода. Но это бредовый путь. Лучше использовать либо дебаггер самого Питона (модуль pdb) либо PyDEV Debug.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#7 Март 7, 2013 03:30:28

CommonUser
Зарегистрирован: 2013-02-25
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

Товарищи, подскажите, как в консоль эклипса передать сочетания клавиш CTRL+C ?

Офлайн

#8 Март 7, 2013 03:30:35

CommonUser
Зарегистрирован: 2013-02-25
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

Товарищи, подскажите, как в консоль эклипса передать сочетания клавиш CTRL+C ?

Офлайн

#9 Март 7, 2013 07:43:55

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

Кажется никак.
Если linux, то можно самому приложению послать сигнал SIGINT.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

#10 Март 7, 2013 11:57:45

andrey_mt
Зарегистрирован: 2013-03-05
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Консоль в Eclipse+PyDev

JOHN_16
вы очень глубоко заблуждаетесь по поводу того как должна работать IDE и shell. Объясняю, IDE просто запускает скрипт, так как если бы вы запустили его из командной строки - это НОРМАЛЬНОЕ поведение, так и работают все программы.
Однако, если вы хотите полазить в памяти программы после ее выполнения (что является не нормальным и не стандартным поведением с точки зрения любой программы), то в помощь вам, нужно вызывать python с ключом -i, однако помните что он вернет вам состояние программы на момент ее окончания - если это простой скрипт, то вам это будет полезно, если это ООП, то тут могут возникнуть неудобства.

Да я и не сомневаюсь, что заблуждаюсь.
Почитал про дебагер вот здесь, попробовал, вроде бы немного разобрался.

Там приведены команды, с помощью которых можно перемещаться по выполняемому коду.
Вот они:


Но у меня возник не очень умный вопрос: а как вернуться на шаг назад в этом процессе?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version