Найти - Пользователи
Полная версия: Консоль в Eclipse+PyDev
Начало » Python для новичков » Консоль в Eclipse+PyDev
1 2
andrey_mt
Приветствую. Не так давно начал самостоятельно изучать Питон для написания расчетных программ по работе. Через некоторое время решил сменить простенький 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).

Спасибо.



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

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

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

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

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

JOHN_16
Ну так вы же на скрине в первом посту открыли консоль. Туда и вводите
andrey_mt
Сам вызов консоли вроде заработал на домашней машине.

Но результаты работы программы всё равно не получается пощуп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.
А повторный запуск возвращает меня к первой картинке.




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

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

Еще одно решение это вставка globals() и locals() в нужные фрагменты кода. Но это бредовый путь. Лучше использовать либо дебаггер самого Питона (модуль pdb) либо PyDEV Debug.
CommonUser
Товарищи, подскажите, как в консоль эклипса передать сочетания клавиш CTRL+C ?
CommonUser
Товарищи, подскажите, как в консоль эклипса передать сочетания клавиш CTRL+C ?
JOHN_16
Кажется никак.
Если linux, то можно самому приложению послать сигнал SIGINT.
andrey_mt
JOHN_16
вы очень глубоко заблуждаетесь по поводу того как должна работать IDE и shell. Объясняю, IDE просто запускает скрипт, так как если бы вы запустили его из командной строки - это НОРМАЛЬНОЕ поведение, так и работают все программы.
Однако, если вы хотите полазить в памяти программы после ее выполнения (что является не нормальным и не стандартным поведением с точки зрения любой программы), то в помощь вам, нужно вызывать python с ключом -i, однако помните что он вернет вам состояние программы на момент ее окончания - если это простой скрипт, то вам это будет полезно, если это ООП, то тут могут возникнуть неудобства.

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

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


Но у меня возник не очень умный вопрос: а как вернуться на шаг назад в этом процессе?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB