問題

在官方 Quickstart 中,建議在使用單個模組時使用__name__:

  1. ...如果您正在使用單個模組(如本例所示),您應該使用__name__,因為取決於它是否開始 應用程式或作為模組匯入的名稱將不同 ('__main__'與實際匯入名)...

但是,在其 API Document 中,當我的應用程式是包時,建議硬編碼:

所以你提供的東西很重要。 模組,__name__始終是正確的值.但是,如果您是 使用包,通常建議硬編碼你的名字 那裡的包裝。

我可以理解為什麼最好硬編碼我的包的名稱,但為什麼不硬編碼單個模組的名稱?或者,換句話說,當它收到__main__作為其第一個引數時,Flask能得到什麼資訊?我無法看到如何使Flask更容易找到資源...

  最佳答案

__name__只是一種方便的方法來獲取應用程式定義地點的匯入名稱. Flask使用匯入名稱知道在哪裡查詢資源,模板,靜態檔案,例項資料夾等.當使用包時,如果您在__init__.py中定義應用程式,那麼__name__將仍然指向相對於資源所在地的“正確”位置.但是,如果您在其他地方定義它,例如mypackage/app.py,那麼使用__name__會告訴Flask尋找相對於mypackage.app而不是mypackage的資源.

使用__name__對於“硬編碼”不是正交的,它只是使用包名稱的快捷方式.也沒有理由說名稱應該是基本包,完全取決於您的專案結構.

  相同標籤的其他問題

pythonflaskimportmodulepackage