Flask应用程序,Gunicorn没有看到自定义类?

Flask应用程序,Gunicorn没有看到自定义类?,flask,gunicorn,Flask,Gunicorn,我有一个flask应用程序,在我的Jupyter笔记本中运行良好,在本地机器上作为app.py运行。但是,当我部署到云(渲染)时,我得到一个Gunicorn错误,表示它无法获取属性(我需要的自定义类) 我必须定义一些自定义类: class SegLabelListCustom(SegmentationLabelList): def open(self, fn): return open_mask(fn, div=True) class SegItemListCustom(Segmentatio

我有一个flask应用程序,在我的Jupyter笔记本中运行良好,在本地机器上作为app.py运行。但是,当我部署到云(渲染)时,我得到一个Gunicorn错误,表示它无法获取属性(我需要的自定义类)

我必须定义一些自定义类:

class SegLabelListCustom(SegmentationLabelList):
def open(self, fn): return open_mask(fn, div=True)

class SegItemListCustom(SegmentationItemList):
_label_cls = SegLabelListCustom
打开已保存的深度学习文件之前:

learn = load_learner(path, 'cell_export.pkl')
这在我的Jupyter笔记本中运行良好,并在本地运行app.py服务

但是,当我在云中部署(使用Gunicorn)时,会出现以下错误:

File "/opt/render/project/src/.venv/bin/gunicorn", line 10, in <module>
    sys.exit(run())
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 61, in run
    WSGIApplication("%(prog)s [OPTIONS] [APP_MODULE]").run()
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/app/base.py", line 223, in run
    super(Application, self).run()
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/app/base.py", line 72, in run
    Arbiter(self).run()
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/arbiter.py", line 60, in __init__
    self.setup(app)
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/arbiter.py", line 120, in setup
    self.app.wsgi()
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
    return self.load_wsgiapp()
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/gunicorn/util.py", line 350, in import_app
    __import__(module)
  File "/opt/render/project/src/app.py", line 49, in <module>
    learn = load_learner(path, export_file_name)
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/fastai/basic_train.py", line 598, in load_learner
    state = torch.load(source, map_location='cpu') if defaults.device == torch.device('cpu') else torch.load(source)
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/torch/serialization.py", line 387, in load
    return _load(f, map_location, pickle_module, **pickle_load_args)
  File "/opt/render/project/src/.venv/lib/python3.7/site-packages/torch/serialization.py", line 574, in _load
    result = unpickler.load()
AttributeError: Can't get attribute 'SegItemListCustom' on <module '__main__' from '/opt/render/project/src/.venv/bin/gunicorn'>
文件“/opt/render/project/src/.venv/bin/gunicorn”,第10行,在
sys.exit(run())
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/app/wsgiapp.py”,第61行,运行中
WSGIApplication(“%(程序)s[选项][应用程序模块]”)。运行()
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/app/base.py”,第223行,运行中
super(应用程序,self).run()
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/app/base.py”,第72行,运行中
仲裁者(self.run)()
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/arbiter.py”,第60行,在__
自我设置(应用程序)
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/arbiter.py”,第120行,在安装程序中
self.app.wsgi()
wsgi中的文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/app/base.py”,第67行
self.callable=self.load()
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/app/wsgiapp.py”,第52行,已加载
返回self.load_wsgiapp()
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/app/wsgiapp.py”,第41行,在load_wsgiapp中
return util.import\u app(self.app\u uri)
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/gunicorn/util.py”,第350行,在导入应用程序中
__导入(模块)
文件“/opt/render/project/src/app.py”,第49行,在
学习=加载学习器(路径、导出文件名)
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/fastai/basic\u train.py”,第598行,加载学习者
state=torch.load(source,map_location='cpu'),如果默认值为。device==torch.device('cpu'),否则torch.load(source)
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/torch/serialization.py”,第387行,已加载
返回加载(f,映射位置,pickle模块,**pickle加载参数)
文件“/opt/render/project/src/.venv/lib/python3.7/site packages/torch/serialization.py”,第574行,加载
结果=unpickler.load()
AttributeError:无法在上获取属性“SegItemListCustom”

我不知道如何解决或排除此问题。

您是否能够解决此问题?我也面临着类似的问题。