如何在Python脚本中查看错误或异常?

时间:2012-10-29 07:41:35

标签: python exception-handling error-handling

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

我习惯了PHP的错误处理和日志记录。然而,使用Python,我会在一个非常简单的脚本上得到500错误。

有没有办法打开Python的错误处理?因为500错误并没有告诉我任何事情,除了有些事情是不对的。

我已经在网上寻找答案,但我找不到解决方案应该是非常明显的。

1 个答案:

答案 0 :(得分:6)

你的问题是询问如何错误或异常(当然不是如何处理,当然你也需要处理这些错误),并且500 error和PHP背景似乎意味着你正在使用Python进行Web编程。

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

  1. 在生产中使用logging module来记录错误。有很多工具可以帮助您,例如Sentry [source code here]。您可以阅读有关记录here
  2. 的更多信息
  3. 在开发中,使用python -m pdb myscript.py运行您的脚本,它将以调试器模式启动您的脚本,然后输入ccontinue)继续脚本直到发生错误,现在您将能够看到交互式PDB(Python调试器)提示中的状态。
  4. 在开发中,如果您使用的是依赖于WSGI的框架(或您的脚本),您可以使用基于浏览器的图形化交互式帮助程序Werkzeug,它允许您在每个< / em>调用堆栈的级别。

  5. 并且,为了指出最明显的一个,如果程序崩溃,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