Отладка Django с помощью Emacs - PullRequest
       53

Отладка Django с помощью Emacs

20 голосов
/ 12 ноября 2008

Я нашел много информации о том, как отлаживать простые программы на Python с Emacs. Но что, если я хочу отладить приложение Django? Я запускаю сервер разработки и хотел бы как-то присоединиться к процессу из Emacs, а затем установить точки останова и т. Д. Аналогично «присоединению к процессу» Visual Studio. Как это сделать?

Ответы [ 6 ]

17 голосов
/ 12 ноября 2008

Это не относится к emacs, но вы можете использовать отладчик Python, добавив в функцию просмотра Django следующее:

import pdb; pdb.set_trace()

Теперь, когда вы запускаете сервер разработки и просматриваете страницу, ваш браузер будет зависать или загружаться очень медленно - переключитесь на консоль, и вы получите доступ к полному отладчику. Вы можете проверить и изменить состояние вашего приложения с помощью интерактивной оболочки - ознакомьтесь с документацией по Python для отладчика или этой ссылкой для некоторых примеров отладки Python


Если все, что вам нужно, это войти в систему, добавьте следующее к вашему settings.py:

logging.basicConfig(
    level = logging.DEBUG,
    format = '%(asctime)s %(levelname)s %(message)s',
    filename = '/tmp/mylog.log',
    filemode = 'w'
)

Теперь вы можете регистрировать сообщения на /tmp/mylog.log, добавив следующее к любой функции просмотра:

import logging
logging.debug("Something happened")
12 голосов
/ 03 ноября 2009

Запустите pdb следующим образом:

М-х pdb

Затем запустите сервер разработки Django:

python manage.py runserver --noreload

Как только вы получите приглашение (Pdb), вам нужно сделать следующее:

import sys
sys.path.append('/path/to/directory/containing/views.py')

Как только вы это сделаете, вы сможете нормально устанавливать точки останова. Просто перейдите к нужному номеру строки и

C-x SPC

3 голосов
/ 13 ноября 2008

Вот что я обнаружил вчера вечером, и в случае сбоя программы будет делать именно то, что вы хотите:

http://code.google.com/p/django-command-extensions/

После установки вы можете запустить:

python manage.py runserver_plus

, и на вашей странице Error появится интерактивный AJAX console. (Очевидно, что при работе в этом режиме будьте осторожны с количеством доступа людей к этому веб-серверу.)

GitHub: https://github.com/django-extensions/django-extensions

Вы можете получить расширения Django, используя pip или easy_install:

$ pip install django-extensions или $ easy_install django-extensions

Если вы хотите установить его из исходного кода, скачайте git-репозиторий из GitHub и запустите setup.py:

$ git clone git: //github.com/django-extensions/django-extensions.git
$ cd django-extensions
$ python setup.py install

1 голос
/ 14 сентября 2011

Поскольку последние версии режима Python Emacs по умолчанию поддерживают функциональность pdbtrack, все, что вам нужно, это просто установить точку останова в своем коде следующим образом:

import pdb; pdb.set_trace()

Кроме того, вы должны запустить свой сервер приложений Django из оболочки Emacs:

М-х shell

А затем в оболочке запустите сервер разработки Django:

python ./manage.py runserver

P.S. Нет необходимости в определенных сеансах pdb или флаге --noreload. Noreload потребует от вас перезапуска приложений вручную, поэтому я не считаю это полезным для Emacs.

0 голосов
/ 13 сентября 2011

Об обычном не-emacs-эксклюзивном способе очень интересный скринкаст, который может вас заинтересовать:

Интеграция с emacs, описанная выше, у меня пока не работает. Кажется, он не подключается к запущенному приложению.

Далее я считаю этот пост здесь очень интересным: http://web.archive.org/web/20101230072606/http://panela.blog-city.com/python_and_emacs_5_pdb_and_emacs.htm

у.е. Roman

0 голосов
/ 12 ноября 2008

Я действительно ничего об этом не знаю, но размещение "отладки Python с emacs" в Google дало мне эту страницу о отладке, искаженной с помощью emacs , так что это кажется возможным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...