Python Django PyCharm debug
Всегда возникает необходимость отладки приложения, установки точек остановки (think point). Простые варианты отладки в python это print, в Django приложении можно использровать logger. Можно конечно использовать деление на ноль в нужных местах. В этом смысле PyCharm предоставляет потрясающие возможности программистам, для отладки сложных проектов.
Локальная отладка (local debug)
Обязательно настроим интерпретатор проекта
File -> Settings -> Project Interpreter -> Configure Interpreters
File -> Settings -> Django support
Ставим галочку Enable Django Support
Заполняем необходимые поля в окне
Django project root:
/home/user/Projects/my_project/project
Settings:
main_app/settings/development.py
Manage script:
manage.py
Run -> Edit Configurations -> + Django Server
Ставим галочки Single instance only
,No reload
Заполняем необходимые поля
Name:
local_project_run
Working directory:
/home/user/Projects/my_project/project
Все остальные поля заполнены автоматически
Теперь можно использовать Shift+F9 debug. Ставить точки остановки.
Удаленная отладка (remote python debug)
Для её работы необходимо скачать дополнение для pycharm-debug.egg или pycharm-debug-py3k.egg если этих модулей нет в директории установки PyCharm
Обязательно изменить файл manage.py
, добавив в него следующие строки сразу после импорта модулей:
sys.path.append('/opt/pycharm-2.7.3/pycharm-debug.egg')
import pydevd
pydevd.settrace('localhost', port=21000, stdoutToServer=True, stderrToServer=True)
Необходимо создать конфигурацию отладки Run -> Edit Configurations -> + Python Remote Debug
Заполняем необходимые поля в окне
Name:
remote_project_debug
Local host name:
localhost
Port:
21000
Сохраняем запускаем debug: PyCharm debug console переходит в режим подключения
Далее запускаем Django проект из командной строки:
$(env): python manage.py runserver --noreload
Мы увидим в PyCharm debug console Connected
.
Важно! Срабатывает один раз. Что-то меняем и снова придется переподключаться.
P.S. Пишу эту статью для друга. который не на шутку увлекся програмированием, для того, чтобы облегчить его тернистый путь. Может быть кому-то эта статья будет также полезна.