python - 如何查看 Python 脚本中的错误或异常?

标签 python exception error-handling

我完全不熟悉 Python(我有 PHP 背景)

我习惯了 PHP 的错误处理和日志记录。然而,对于 Python,我在一个应该工作的非常简单的脚本上遇到了 500 错误。

有没有办法用 Python 开启错误处理?因为 500 错误并没有告诉我太多信息,除了有些地方不对。

我已经在网上寻找这个问题的答案,但我没有找到一个应该非常明显的解决方案。

最佳答案

您的问题是询问如何查看错误或异常(而不是如何处理,当然您也需要处理这些错误),并从500 错误 和 PHP 背景似乎暗示您正在使用 Python 进行 Web 编程。

在 Python 中有很多方法可以做到这一点,这里是我倾向于使用的一些方法:

  1. 在生产中使用logging module记录错误。有很多工具可以帮助您,例如 Sentry [ source code here ].您可以阅读有关日志记录的更多信息 here .
  2. 在开发中,使用 python -m pdb myscript.py 运行您的脚本,这将以调试器模式启动您的脚本,然后输入 c(继续) 继续脚本直到发生错误,现在您将能够在交互式 PDB(Python 调试器)提示符中看到状态。
  3. 在开发中,如果您使用的是依赖 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/

相关文章:

python - 为什么 Geopy Distance.Distance 错误?

android - 如果发生错误,如何使用Spring resttemplate和androidannotations从HttpResponse获取 header ?

python - 函数内的Python错误调用函数

python - 对给定列表 Python 的给定范围内的所有数字求和

python - 将 Flask-SocketIO 与 Flask-Login 和 HTTP Basic Auth 结合使用

python - 自定义 Flask 应用程序的记录器名称

android - 构建失败,有异常吗?安卓

java - "Don' t 捕获通用异常!”但是如何解决它们呢?

c# - 将字符串转换为双重异常

asp.net-mvc-3 - ASP.NET MVC 3-如何处理Global.asax中的错误?