Как включить функции отладки Eclipse в веб-приложении? - PullRequest
3 голосов
/ 12 октября 2011

Я использую инфраструктуру Django для своего веб-приложения Python, использующего Eclipse IDE и плагин PyDev. Как я могу использовать функции отладки?

UPDATES1 особенно с использованием http://pydev.org/updates плагин

UPDATES2 Я уже сделал следующее:

.pydevproject

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?eclipse-pydev version="1.0"?>

<pydev_project>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_INTERPRETER">Python25
</pydev_property>
<pydev_property name="org.python.pydev.PYTHON_PROJECT_VERSION">python 2.5
</pydev_property>
<pydev_pathproperty name="org.python.pydev.PROJECT_SOURCE_PATH">
<path>/pi-proto</path>
</pydev_pathproperty>
<pydev_pathproperty name="org.python.pydev.PROJECT_EXTERNAL_SOURCE_PATH">
<path>C:\Program Files\GeoDjango\Django-1.0.2-final</path>
<path>C:\eclipse-SDK-3.7-win32\plugins\org.python.pydev.debug_2.2.3.2011100616\pysrc
</path>
</pydev_pathproperty>
</pydev_project>

manage.py

#!/usr/bin/env python
from django.core.management import execute_manager
try:
    import settings # Assumed to be in the same directory.
except ImportError:
    import sys
    sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
    sys.exit(1)

if __name__ == "__main__":
    import sys
    if len(sys.argv) > 1:
        command = sys.argv[1]

    if settings.DEBUG and (command == "runserver" or command == "testserver"):

        # Make pydev debugger works for auto reload.
        try:
            import pydevd
        except ImportError:
            sys.stderr.write("Error: " +
                "You must add org.python.pydev.debug.pysrc to your PYTHONPATH.")
            sys.exit(1)

        from django.utils import autoreload
        m = autoreload.main
        def main(main_func, args=None, kwargs=None):
            import os
            if os.environ.get("RUN_MAIN") == "true":
                def pydevdDecorator(func):
                    def wrap(*args, **kws):
                        pydevd.settrace(suspend=False)
                        return func(*args, **kws)
                    return wrap
                main_func = pydevdDecorator(main_func)

            return m(main_func, args, kwargs)

        autoreload.main = main

    execute_manager(settings)

Запустить конфигурации - Аргументы

runserver 0.0.0.0:8001

UPDATES3 Я перехожу по этой ссылке http://bear330.wordpress.com/2007/10/30/how-to-debug-django-web-application-with-autoreload/

Но безуспешно. Не могли бы вы подсказать мне, как правильно перейти по ссылке выше? Затем я обновлю результат здесь.

UPDATES4 Я использую Python 2.5.2, GeoDjango 1.2.7, Eclipse Indigo с плагином PyDev.

Ответы [ 2 ]

1 голос
/ 12 октября 2011

Чтобы настроить PyDev для работы с Django, см .: http://pydev.org/manual_adv_django.html

Итак, если вы выполняете без функции автоматической перезагрузки (что PyDev будет делать автоматически при создании нового запуска Django),вы можете делать все напрямую (т.е. отладчик и запуск не нуждаются в каких-либо специальных настройках).

Теперь, если вы хотите включить автоматическую перезагрузку во время разработки, используйте советы по адресу: PyDevи Django: как перезапустить сервер dev? (чтобы устранить проблему, из-за которой Django оставит дочерние процессы живыми, когда основной процесс убит)

И посмотрите сеанс, связанный с удаленным отладчиком, по адресу: http://pydev.org/manual_adv_remote_debugger.html, чтобы увидеть, как подключить отладчик к PyDev при использовании функции автоматической перезагрузки (в основном вам нужно запустить удаленный отладчик, но он будет регулярно добавлять точки останова, а PyDev будет останавливаться на тех, которые вы вызываете pydevd.patch_django_autoreload() перед основной сессией).

1 голос
...