我得到的錯誤: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()
我收到以下錯誤:沒有名為“后端”的模塊,為什么會這樣?
有沒有人遇到過類似的問題,我能做些什么來解決它?
uj5u.com熱心網友回復:
根據新資訊更新我認為我們可以讓您回家。
1.)移動run.py到procfile(相同的目錄)旁邊。/app/run.py那個“運行檔案”應該在 Heroku的頂級目錄中。
檔案組織的一個很好的基本模式是“模塊化”所有內容(帶有__init__.py檔案的目錄)。然后所有匯入都來自頂級run.py[運行行程的位置]行走子檔案夾。只要您向下遍歷匯入,事情就會保持相當穩定。如果您嘗試向上導航目錄,則會出現問題。
解決任何匯入問題,一開始可能會很棘手,但很快就會成為一種思維方式。
2.)extensions.py進入src(暫時)并匯入from src import foo
以下是我在 Heroku 中運行的所有活動 Django 和類似應用程式中的模式。我多年來一直使用的相同布局。在下面的螢屏截圖manage.py中是 Django 的等價物run.py。我沒有在這個應用程式上使用 docker 映像,所以這不在等式中,只是代碼和依賴項。

您的問題是完全可以理解的,其他 Python 開發人員一直這樣做很容易被認為是理所當然的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/484131.html
