我试图在 heroku 上托管我的烧瓶 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
- run.py
- proc文件
__init.py:
has the create app method
run.py:
from . import create_app
if __name__ == "__main__":
app = create_app("config")
app.run(debug=True)
过程文件:
网络:gunicorn run:app
编辑:
我重新安排了应用结构:
- 后端
- init.py
- procifle
- extensions.py
- src
- init.py
- run.py
init.py:
empty
src/init.py:
from ..extensions import db,migrate
has the create app method
src/run.py:
from src import create_app
if __name__ == "__main__":
app = create_app("config")
app.run(debug=True)
所以现在新的错误是:
- 从 ..extensions 导入 db
- ImportError:尝试相对导入超出顶级包
编辑#2:
要指出的另一件事是,假设在 run.py 中我做了以下事情:
从后端导入 create_app()
I get the following error: no module named "Backend" why could that be?
有没有人遇到过类似的问题,我该如何解决?
根据新信息更新我想我们可以送你回家。
1.) 将 run.py
移到 procfile 旁边(同一目录)。那个“运行 文件”应该在 Heroku 中 /app/run.py
的那个顶级文件中。
文件组织的一个很好的基本模式是“模块化”所有内容(带有 __init__.py
文件的目录)。然后所有导入都来自顶层 run.py
[进程是 运行ning from] 遍历子文件夹。只要你向下遍历进口,事情就会保持相当稳定。如果您尝试向上导航目录,则会出现问题。
解析任何导入,一开始可能会很棘手,但很快就会成为一种思维方式。
2.) 将 extensions.py
移动到 src
(暂时)并导入 from src import foo
以下是我在 Heroku 中所有活跃的 Django 和类似应用程序 运行ning 中的模式。我多年来一直使用相同的布局。在下面的屏幕截图中,manage.py
是您的 run.py
的 Django 等价物。我没有在这个应用程序上使用 docker 图片,所以这不在等式中,只有代码和依赖项。
你的问题是完全可以理解的,很容易认为其他 Python 开发者总是这样做是理所当然的。
我得到的错误:ImportError:试图在没有已知父包的情况下进行相对导入
我的文件夹结构:
-后端
__init__
.py- run.py
- proc文件
__init.py:
has the create app method
run.py:
from . import create_app
if __name__ == "__main__":
app = create_app("config")
app.run(debug=True)
过程文件:
网络:gunicorn run:app
编辑:
我重新安排了应用结构:
- 后端
- init.py
- procifle
- extensions.py
- src
- init.py
- run.py
init.py:
empty
src/init.py:
from ..extensions import db,migrate
has the create app method
src/run.py:
from src import create_app
if __name__ == "__main__":
app = create_app("config")
app.run(debug=True)
所以现在新的错误是:
- 从 ..extensions 导入 db
- ImportError:尝试相对导入超出顶级包
编辑#2: 要指出的另一件事是,假设在 run.py 中我做了以下事情: 从后端导入 create_app()
I get the following error: no module named "Backend" why could that be?
有没有人遇到过类似的问题,我该如何解决?
根据新信息更新我想我们可以送你回家。
1.) 将 run.py
移到 procfile 旁边(同一目录)。那个“运行 文件”应该在 Heroku 中 /app/run.py
的那个顶级文件中。
文件组织的一个很好的基本模式是“模块化”所有内容(带有 __init__.py
文件的目录)。然后所有导入都来自顶层 run.py
[进程是 运行ning from] 遍历子文件夹。只要你向下遍历进口,事情就会保持相当稳定。如果您尝试向上导航目录,则会出现问题。
解析任何导入,一开始可能会很棘手,但很快就会成为一种思维方式。
2.) 将 extensions.py
移动到 src
(暂时)并导入 from src import foo
以下是我在 Heroku 中所有活跃的 Django 和类似应用程序 运行ning 中的模式。我多年来一直使用相同的布局。在下面的屏幕截图中,manage.py
是您的 run.py
的 Django 等价物。我没有在这个应用程序上使用 docker 图片,所以这不在等式中,只有代码和依赖项。
你的问题是完全可以理解的,很容易认为其他 Python 开发者总是这样做是理所当然的。