![](/img/trans.png)
[英]WSGI Script Cannot Be Loaded as Python Module — 500 Internal Server Error
[英]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.