当我尝试加载pickle文件时收到此错误消息:
Can't get attribute 'CustomNMF' on <module '__main__' from '/Users/cricket/Documents/ONline classes/A6 - Stackoverflow/Tag-generator-Stackoverflow/app.py'
我的问题是,我错过了import CustomNMF
或其他能使其正常工作的内容?
这是我正在研究的烧瓶项目,结构是:
项目文件夹:
+ app.py
+ app (sub-folder)
++ __init__.py
++ views.py
++ CustomNMF.py
++ and other things...
app.py
的内容:
from app import app
if __name__ == "__main__":
app.run(debug=True)
__init__.py
from flask import Flask
app = Flask(__name__)
from app import views
views.py
的内容:
....
from app.CustomNMF import CustomNMF
customNMF = CustomNMF() #That works fine !
def loadpickle(filename = 'customNMF.pickle'):
with open(os.path.join(os.getcwd(),'app', filename), 'rb') as f:
return pickle.load(f)
customNMF = loadpickle('customNMF.pickle') #Line that is generating the error :-(
....
CustomNMF.py
的内容:(用于创建class
的笔记本中的简单复制粘贴)
class CustomNMF(BaseEstimator, TransformerMixin):
def __init__(self,popularitytags=None, **params):
self.popularitytags = popularitytags
.......
对于大多数人来说,我确定这一点很明显,解决方案只是我遗漏的一小部分细节。任何帮助将不胜感激。
答案 0 :(得分:0)
我想我发现了这个问题:我从python笔记本中保存了customNMF
。我不得不稍微修改dask
版本中的类,而不是为网站版本调用一些不必要的包(来自sklearn
的交叉验证和指标)。
我认为那些微小的修改是问题的根源。
现在,CustomNMF经过培训和腌制,供网站服务器以后使用。不确定这是最好的方法,但它正在发挥作用!
如果有人作为关于包结构的良好讲座以及如何表达它们(简化版;-)只是为了我),我真的很感激。
由于