繁体   English   中英

我试图在heroku上托管我的flask api,但是在将路径传递给我的应用程序时,出现导入错误

[英]im trying to host my flask api on heroku, but when passing the path to my app, i get an import error

我得到的错误:ImportError:尝试使用没有已知父包的相对导入

我的文件夹结构:

-后端

  • __init__ .py
  • 运行.py
  • 过程文件

__init.py:

has the create app method

运行.py:

from . import create_app

if __name__ == "__main__":
   app = create_app("config")
   app.run(debug=True)

过程文件:

网络:gunicorn 运行:应用程序

编辑:

我重新安排了应用程序结构,其中:

  • 后端
  • 初始化.py
  • 简介
  • 扩展程序.py
  • 源代码
  • 初始化文件
  • 运行.py

初始化.py:

empty

src/init.py:

from ..extensions import db,migrate
has the create app method

源/运行.py:

from src import create_app

if __name__ == "__main__":
  app = create_app("config")
  app.run(debug=True)

所以现在新的错误是:

  • 从 ..extensions 导入数据库
  • ImportError:尝试相对导入超出顶级包

编辑#2:要指出的另一件事是,假设在 run.py 中我执行以下操作: from Backend import create_app()

我收到以下错误:没有名为“后端”的模块,为什么会这样?

有没有人遇到过类似的问题,我能做些什么来解决它?

根据新信息更新我认为我们可以让您回家。

1.) 将run.py旁边(相同的目录)。 那个“运行文件”应该在 Heroku 的/app/run.py的顶级目录中。

文件组织的一个很好的基本模式是“模块”所有内容(带有__init__.py文件的目录)。 然后所有导入都来自顶级run.py [运行进程的位置] 行走子文件夹。 只要您向下遍历导入,事情就会保持相当稳定。 如果您尝试向上导航目录,则会出现问题。

解决任何导入问题,一开始可能会很棘手,但很快就会成为一种思维方式。

2.) 将extensions.py移动到src (现在)并from src import foo

以下是我在 Heroku 中运行的所有活动 Django 和类似应用程序中的模式。 我多年来一直使用的相同布局。 在以下屏幕截图中, manage.py是您的run.py的 Django 等价物。 我没有在这个应用程序上使用 docker 映像,所以这不在等式中,只是代码和依赖项。

我的 Django 目录的屏幕截图发送到 Heroku

您的问题是完全可以理解的,其他 Python 开发人员在这样做时很容易认为这是理所当然的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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