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

2 投票
4 回答
5159 浏览
提问于 2025-04-16 13:34

我有一个Python脚本,它通过使用PEST wsgi库来异步执行函数。但是,当我尝试导入另一个模块时,结果却是500错误。

我尝试引用它的方式是:

from foo import * 
from foo import Foo

这里的foo是一个.py文件,里面有我想要引用的对象。

我试着通过Chrome的检查元素功能来监控调用,但什么也没找到。

我还尝试使用Apache的错误日志进行调试,但也没有任何信息。
如果有任何提示,我将非常感激。

更新:
我尝试了以下方法,但仍然出现相同的500错误:

--使用

import site 

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

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

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

--在/etc/apache2/sites-available/myapp.conf中修改应用程序配置文件,插入上述WSGIPythonPath。

4 个回答

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

Apache的500错误只是告诉你,Python脚本出现了错误。我猜在Apache的环境中,Python找不到那个模块。你可以试试写一个简单的脚本,打印出sys.path,看看里面有没有你期待的目录。

2

在应用程序的配置文件中,先加上

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

这个内容,然后再添加其他的别名或目录,这样做真的能解决问题。

撰写回答