繁体   English   中英

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

[英]500 internal server error when importing a python module in 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中的应用程序conf文件

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

添加

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

在应用程序conf文件中的任何其他别名或目录真正起作用之前。 问题解决了!

也许您应该对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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM