2017-10-18 92 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