[英]load a pickle file in a sub package --> error with module '__main__'
尝试加载泡菜文件时收到以下错误消息:
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
内容CustomNMF.py
用于创建class
的笔记本中的简单复制粘贴)
class CustomNMF(BaseEstimator, TransformerMixin):
def __init__(self,popularitytags=None, **params):
self.popularitytags = popularitytags
.......
我相信这对于大多数人来说都是显而易见的,而解决方案只是我所缺少的一小部分。 任何帮助将不胜感激。
我想我找到了问题:我保存了从python笔记本训练而来的customNMF
。 我不得不稍微修改一下dask
版本中的类,而不是为网站版本调用一些不必要的包(来自sklearn
交叉验证和指标)。 我认为这些小修改是问题的根源。
现在,CustomNMF已经过培训和腌制,供网站服务器以后使用。 不确定这是最好的方法,但它是否有效!
如果有人能很好地介绍软件包的结构以及如何表达它们(简化版;-),那我将非常感激。
谢谢
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.