![](/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.