Как я могу отладить код Python без запуска скрипта (используя Eclipse)? - PullRequest
3 голосов
/ 09 августа 2011

Я заметил, как легко отлаживать скрипт Python из Eclipse. Просто установите точки останова и запустите скрипт Python из меню отладки. Но возможно ли запустить Python Interactive Interpreter вместо того, чтобы запускать конкретный скрипт Python, в то же время Eclipse ломается на точках останова? Это сделало бы , поэтому намного проще для тестирования функций.

Спасибо за любую помощь


Все еще ищу простой / простой способ запуска отладчика в Eclipse-> PyDev, который позволяет мне использовать интерактивный отладчик. Ни один из ответов пока не является приемлемым

Ответы [ 2 ]

2 голосов
/ 10 августа 2011

Вы можете явно написать код для установки точки останова в вашем скрипте, а затем «удаленная отладка».Это означает наличие pydevd в pythonpath вашего скрипта, где бы он ни выполнялся, и запуск удаленного отладчика eclipse pydev на вашем devbox.Если все это происходит на одной машине, это довольно просто.Если нет, вам нужно будет указать имя хоста машины разработчика, на которой запущен удаленный отладчик python, в вызове settrace ().Вам также понадобится pydevd, доступный на компьютере, на котором выполняется сценарий.

В прошлом это работало без необходимости устанавливать eclipse + pydevd на компьютере, на котором выполняется сценарий.Это не совсем просто, и если вы пойдете по этому пути, я бы порекомендовал проверить, совпадают ли версии pydevd или, по крайней мере, вы знаете, что они совместимы.В противном случае вы теряете время на отладку отладчика.

Подробнее см .: Удаленный отладчик Pydev

0 голосов
/ 10 августа 2011

Как насчет этого, в скрипте вы можете написать функцию, скажем, onlyForTest, затем каждый раз, когда вы пишете новую функцию и хотите ее протестировать, вы можете просто поместить ее в функцию onlyForTest, а затем указать некоторые аргументы, необходимые дляновую функцию, которую вы только что написали, затем откройте интерактивную оболочку python, импортируйте скрипт, вызовите функцию onlyForTest, проверьте результат.

...