2011-10-12 129 views
3

我正在使用Eclipse IDE和PyDev Plugin为我的Python Web应用程序使用Django框架。 如何使用调试功能?如何在Web应用程序中启用Eclipse调试功能?

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 Plugin。

回答

1

配置PyDev的Django的工作看:http://pydev.org/manual_adv_django.html

所以,如果你在没有自动重载特性的情况下执行e(PyDev会在您创建新的Django运行时自动执行),您可以直接执行所有操作(即:调试器和启动不需要任何特殊调整)。现在

,如果你想拥有在开发自动重装,在使用提示:PyDev and Django: how to restart dev server?(克服了一个问题,Django会离开子进程活着的时候,主要的进程被终止)

而看到有关远程调试器的会话,请参阅:http://pydev.org/manual_adv_remote_debugger.html,以了解如何在使用自动重载功能时将调试器附加到PyDev(主要是,您需要启动远程调试器,但会定期添加断点,PyDev将停止使用提供的那些您在主会话之前调用pydevd.patch_django_autoreload()。

+0

这是非常有用的,但我不能跟着它成功。你会引导我通过更新上面的代码或告诉我该怎么做... – eros

+0

在'if __name__ =='__main __“:'之前,添加'import pydevd; pydevd.patch_django_autoreload()'并在autoreload.py中,应用来自http:// stackoverflow的修补程序。com/questions/2746512/pydev-and-django-how-to-restart-dev-server/7648375#7648375 –

+0

我正在使用GeoDjango 1.2.7和Python 2.5.2。任何版本的细节来应用补丁? – eros

相关问题