2017-10-18 90 views
0

我想加載一個泡菜,並通過Flask應用程序顯示一些數據。我遵循的結構如下。Flask屬性錯誤與unpickling

package1.py

class myclass: 
    #do something 
m = myclass() 
pickle.load(m,filehandle) 

package2.py

from package1 import myclass 
def query_processor(params): 
    x = pickle.load(filehandle) 
    #do stuff on x using params 
    return results 
if __name__ == "__main__": 
    print(query_processor(params)) #Works as expected 

flaskapp.py

import package2 

@app.route("/", methods=['GET', 'POST']) 
def hello(): 
    result = package2.query_processor(params) 
    return render_template(template_name,form=form,msg=result) 

的FL內askapp,我得到一個錯誤,如:

AttributeError: Can't get attribute 'myclass' on <module '__main__' from <flask_path> 

有沒有辦法解決這個問題?有人可以解釋爲什麼我有這個錯誤?

回答

0

爲了解開問題,您需要擁有與您對物體進行酸洗的時間點相同的模塊和包裝結構。

您的異常提示您已經在您作爲程序運行的模塊中定義了類,因此它沒有* .py文件的名稱,但名稱爲__main__。當試圖從Flask應用程序中取消它時,另一個模塊是__main__模塊,該模塊不包含myclass類對象。

因此,最簡單的修復程序將使用另一個模塊作爲程序,當創建鹹菜。該模塊必須從package1導入package1或至少myclass