簡體   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