簡體   English   中英

flask 應用程序在本地運行,但在部署到 heroku 時崩潰

[英]flask app runs locally but crashes when deploying to heroku

我有一個 flask 應用程序在部署到 Heroku 時崩潰,該應用程序在 Procfile gunicorn wsgi:app中使用完全相同的命令在本地運行良好

相關heroku日志:

2021-02-02T00:10:31.529605+00:00 app[web.1]:   File "/app/wsgi.py", line 4, in <module>
2021-02-02T00:10:31.529605+00:00 app[web.1]:     app = create_app()
2021-02-02T00:10:31.529606+00:00 app[web.1]:   File "/app/app/__init__.py", line 15, in create_app
2021-02-02T00:10:31.529606+00:00 app[web.1]:     from . import routes
2021-02-02T00:10:31.529606+00:00 app[web.1]:   File "/app/app/routes.py", line 6, in <module>
2021-02-02T00:10:31.529606+00:00 app[web.1]:     from package.reservation_factory import ReservationFactory
2021-02-02T00:10:31.529606+00:00 app[web.1]:   File "/app/package/reservation_factory.py", line 2, in <module>
2021-02-02T00:10:31.529607+00:00 app[web.1]:     from package.provider import ProviderReservation
2021-02-02T00:10:31.529607+00:00 app[web.1]:   File "/app/package/provider.py", line 12, in <module>
2021-02-02T00:10:31.529607+00:00 app[web.1]:     from package.reservation import Reservation
2021-02-02T00:10:31.529608+00:00 app[web.1]: ModuleNotFoundError: No module named 'package.reservation'
2021-02-02T00:10:31.529902+00:00 app[web.1]: [2021-02-02 00:10:31 +0000] [7] [INFO] Worker exiting (pid: 7)
.
├── Pipfile
├── Pipfile.lock
├── Procfile
├── app
│   ├── __init__.py
│   ├── forms.py
│   ├── routes.py
│   └── templates
│       ├── base.html
│       └── reservation.html
├── package
│   ├── __init__.py
│   ├── provider.py
│   ├── reservation.py
│   └── reservation_factory.py
├── runtime.txt
└── wsgi.py

您的項目結構的問題是缺少頂級__init__.py文件。 該文件是制作 Python package 所必需的,您可以從中導入。

雖然不是強制性的,但許多項目 go 具有src布局,如下所示:

❯ tree src/
src/
└── reservation_app
    ├── app
    │   ├── forms.py
    │   ├── __init__.py
    │   ├── routes.py
    │   └── templates
    ├── __init__.py
    └── package
        ├── __init__.py
        ├── provider.py
        ├── reservation_factory.py
        └── reservation.py

4 directories, 8 files

不過,您需要調整導入。

如果您想詳細了解為什么src布局是一件好事,請查看這些博客文章

https://hynek.me/articles/testing-packaging/ https://web.archive.org/web/20170615032800/https://enotuniq.org/https://blog.ganssle.io/articles/2019/ 08/安裝測試。html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM