При работе с AppEngine локально (т.е. с помощью dev_appserver.py), есть ли способ выполнить пошаговую отладку? Это слишком старый способ использовать logging.info() или подобные функции, чтобы показать значения всех переменных в коде и решить, где ошибка.
AppEngine: пошаговая отладка
Ответ 1
Развернуть немного на codeape ответьте на первое предложение: Потому что dev_appserver.py галочки с stdin, stdout и stderr, требуется немного больше работы, чтобы установить "контрольную точку кода". Это делает трюк для меня:
import sys
for attr in ('stdin', 'stdout', 'stderr'):
setattr(sys, attr, getattr(sys, '__%s__' % attr))
import pdb
pdb.set_trace()
Вам нужно запустить dev_appserver.py
из командной строки, а не через GUI App Engine Launcher. Когда выполняется строка pdb.set_trace()
, вы будете отброшены в отладчик pdb
в этой точке.
Ответ 2
Eclipse PyDev поддерживает отладку и AppEngine.
Ответ 3
Если локальный процесс appengine является обычным процессом python, у вас есть несколько вариантов:
-
В вашем коде поместите "контрольные точки кода":
import pdb; pdb.set_trace()
. Запуститеdev_appserver.py
как обычно, и отладчик python будет разбиваться, когда он достигнет строки с кодом. -
Запустите
dev_appserver.py
в pdb. Из оболочки:$ python -m pdb dev_appserver.py
. Чтобы установить точку останова, используйте командуb filename.py:linenumber
. Затем используйте командуc
для продолжения. См. http://docs.python.org/library/pdb.html#debugger-commands
См. документацию pdb.
Ответ 4
PyCharm Professional Edition позволяет поэтапную отладку из коробки.
Если вы захотите пройти несколько этапов настройки, бесплатную версию PyCharm Community Edition можно настроить для работы с питоном Google App Engine. Вы не получите всех преимуществ PyCharm Professional Edition, таких как развертывание, но вы сможете делать пошаговую отладку и получать кодовую навигацию и автозаполнение.
Чтобы включить отладку, отредактируйте конфигурацию Run/Debug PyCharm, установив:
- Script: App Engine dev_appserver.py
- Script параметры:
--automatic_restart=no --max_module_instances="default:1" .
- Рабочий каталог: ваша базовая папка проекта (та, которая содержит файл app.yaml).
Для получения более подробных инструкций, объяснений и получения кода завершения работы в проекте aup PyCharm CE см. http://www.enkisoftware.com/devlogpost-20141231-1-Python_Google_App_Engine_debugging_with_PyCharm_CE.html.
Если вы работаете в Windows и хотите использовать PyTools (сообщество Microsoft Visual Studio) для отладки python для GAE, см. http://www.enkisoftware.com/devlogpost-20140814-1-Python_Google_App_Engine_debugging_with_PyTools.html