繁体   English   中英

在子包中加载一个pickle文件->模块'__main__'错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM