我完全不熟悉 Python(我有 PHP 背景)
我习惯了 PHP 的错误处理和日志记录。然而,对于 Python,我在一个应该工作的非常简单的脚本上遇到了 500 错误。
有没有办法用 Python 开启错误处理?因为 500 错误并没有告诉我太多信息,除了有些地方不对。
我已经在网上寻找这个问题的答案,但我没有找到一个应该非常明显的解决方案。
最佳答案
您的问题是询问如何查看错误或异常(而不是如何处理,当然您也需要处理这些错误),并从500 错误
和 PHP 背景似乎暗示您正在使用 Python 进行 Web 编程。
在 Python 中有很多方法可以做到这一点,这里是我倾向于使用的一些方法:
- 在生产中使用
logging
module记录错误。有很多工具可以帮助您,例如 Sentry [ source code here ].您可以阅读有关日志记录的更多信息 here . - 在开发中,使用
python -m pdb myscript.py
运行您的脚本,这将以调试器模式启动您的脚本,然后输入c
(继续
) 继续脚本直到发生错误,现在您将能够在交互式 PDB(Python 调试器)提示符中看到状态。 - 在开发中,如果您使用的是依赖 WSGI 的框架(或您的脚本),您可以使用基于浏览器内的图形化交互式 JavaScript 帮助程序 Werkzeug这允许您在调用堆栈的每个 级别进行调试。
而且,要指出最明显的一点,如果程序崩溃,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
,因此打开 PythonDebug
在 Apache 配置文件中应该在浏览器中打印堆栈跟踪:
PythonDebug On
对于带有 mod_wsgi
的 Apache,有一篇比我在这里总结的更好的文章:mod_wsgi Debugging Techniques
关于python - 如何查看 Python 脚本中的错误或异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13117641/