簡體   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