django代码中的pdb错误

时间:2015-01-21 19:50:31

标签: python django pdb

我是django环境的新手。我需要调试继承的项目。我需要调试的函数是在views.py中。我们称之为函数x。我的环境是redhat,apache,django。我如何使用pdb调试它。我试着看教程,但似乎无法帮助我。

这是我在redhat命令行上运行的内容

python -m pdb /opt/django/projectx/views.py runserver 

当我点击" c"继续,我提出

ImportError: No module named django.http

这是views.py中的第二行代码。视图中有两个函数(让我们称之为x和y),但我需要进入函数x。

2 个答案:

答案 0 :(得分:2)

Python几乎安装在每个环境中,但每个项目所需的软件包往往差异很大。例如。有些项目只适用于Django 1.6版本,而其他项目则适用于Django 1.7版本。

出于这个原因,一些聪明人创造了virtual environments。这是helpful tutorial done on Red Hat

您的项目很可能是在这样的虚拟环境中运行。 Python无法导入django.http这一事实表明您的默认环境甚至没有安装Django。

开发人员将环境文件夹放在不同的位置。您以前的开发人员可能已将其放在项目文件夹中,或存放在存储其他虚拟环境的其他位置。

查找具有[name_for_env]/bin/activate结构的文件夹名称。

您可以使用以下命令激活: source [name_for_env]/bin/activate

然后停用: deactivate

当您在虚拟环境中时,可以使用以下命令安装缺少的软件包:

pip install [name_of_package]

<强> OR

您还错误地使用了PDB。这也会给你导入错误信息。 必须 使用manage.py运行服务器。这是设置各种Django设置所必需的。 像这样运行:

python -m pdb manage.py runserver

您可以通过following this tutorial在views.py中输入PDB断点。

答案 1 :(得分:1)

您不需要通过pdb启动服务器。您只需在代码中导入pdb并在任何地方设置断点:

import pdb; pdb.set_trace()

当Django到达那一点时,你将被转储到控制台的调试器中。