在wsgi中导入python模块时出现500内部服务器错误

时间:2011-03-12 18:02:51

标签: python apache2 cgi mod-wsgi wsgi

我有一个Python脚本,它使用PEST wsgi库异步执行函数。但是,当我尝试导入另一个模块时,它只会导致500错误。

我尝试引用它的方式是:

from foo import * 
from foo import Foo

其中foo是一个文件.py,其中我有我想要引用的对象。

尝试通过Chrome的Inspect Element Control监控来电,但找不到任何东西。

还尝试使用Apache的错误日志进行调试,但没有任何内容 任何提示赞赏。

更新: 我尝试过以下操作导致同样的500错误:

- 利用

import site 

site.addsitedir("path/to/my/py/files/folder")

- 通过插入以下内容修改Apache2 httpd.conf文件:

WSGIPythonPath /path/to/my/py/files/folder

- 通过插入上面的WSGIPythonPath

修改/etc/apache2/sites-available/myapp.conf中的应用程序配置文件

4 个答案:

答案 0 :(得分:3)

Apache的500错误只是告诉你Python脚本返回错误。我的猜测是,在Apache环境中,Python无法找到该模块。尝试打印sys.path的简单脚本,并确保其中包含您期望的目录。

答案 1 :(得分:2)

添加

WSGIPythonPath /path/to/my/py/files/folder

在应用程序配置文件中的任何其他别名或目录确实产生差异之前。 问题解决了!

答案 2 :(得分:1)

也许您应该将此模式用于cgi脚本以获取html格式的错误:

import cgi
import cgitb; cgitb.enable()  # for troubleshooting
import traceback
# code here
except:
    tb = traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)
    tb = ''.join(tb)
    print '<pre>%s</pre></body></html>' % tb

答案 3 :(得分:0)

如果异常传播回mod_wsgi,则应将详细信息记录到相应的Apache错误日志中。如果不是,则可能是您正在使用的WSGI框架/工具包正在捕获异常并返回通用HTTP 500响应页面。如果是这种情况,您可能需要在正在使用的WSGI框架/工具包中启用调试选项。

或者,问题不在于WSGI脚本文件/应用程序,而在于Apache配置,在这种情况下,您不会寻找Python异常/回溯。因此,您需要更仔细地查看Apache错误日志文件,并查找任何错误并提供它所说的内容。