我对使用Python完全不熟悉(我有PHP背景)
我习惯了PHP的错误处理和日志记录。然而,使用Python,我会在一个非常简单的脚本上得到500错误。
有没有办法打开Python的错误处理?因为500错误并没有告诉我任何事情,除了有些事情是不对的。
我已经在网上寻找答案,但我找不到解决方案应该是非常明显的。
答案 0 :(得分:6)
你的问题是询问如何看错误或异常(当然不是如何处理,当然你也需要处理这些错误),并且500 error
和PHP背景似乎意味着你正在使用Python进行Web编程。
在Python中有很多方法可以这样做,这里有一些我倾向于使用的方法:
logging
module来记录错误。有很多工具可以帮助您,例如Sentry [source code here]。您可以阅读有关记录here。python -m pdb myscript.py
运行您的脚本,它将以调试器模式启动您的脚本,然后输入c
(continue
)继续脚本直到发生错误,现在您将能够看到交互式PDB(Python调试器)提示中的状态。并且,为了指出最明显的一个,如果程序崩溃,Python解释器将打印出堆栈跟踪,例如:
→ python -c 'pprint "hello"'
File "<string>", line 1
pprint "hello"
^
SyntaxError: invalid syntax
# print.py is just one line: print 'hello world'
→ python print.py
File "print.py", line 1
pprint 'hello world'
^
SyntaxError: invalid syntax
<强>更新强>
好像你没有使用任何框架,而且你是一个主机,从它的外观来看,它没有告诉你它是如何为你的Python脚本服务的。现在,由于您只想在浏览器中查看堆栈跟踪,您可以根据主机使用的内容执行以下操作:
如果您的脚本通过CGI在服务器后面运行,那么您需要做的就是使用Python cgitb模块在HTML页面上打印堆栈跟踪:
import cgitb
cgitb.enable()
但是,您注册的共享主机很可能正在使用Apache mod_python
,因此启用Apache配置文件中的PythonDebug
应该在浏览器中打印堆栈跟踪:
PythonDebug On
对于有mod_wsgi
的Apache,写的文章比我在这里总结的更好:mod_wsgi Debugging Techniques