2
我正在使用Flask擴展,從中我想在文件系統的項目根路徑中創建一個目錄。獲取Flask應用程序的根路徑
假設我們有此目錄結構
/project
/app
/tests
/my_folder
manage.py
my_folder應該動態地擴展,這是一種測試工具和下在/測試目錄測試包的應用來創建。但是,我正在努力確定項目在我的擴展中的根路徑。作爲測試從IDE,而不是manage.py內運行,一旦
def root_path(self):
# Infer the root path from the run file in the project root (e.g. manage.py)
fn = getattr(sys.modules['__main__'], '__file__')
root_path = os.path.abspath(os.path.dirname(fn))
return root_path
這顯然打破了:
現在,我想從運行文件猜的路徑。我可以簡單地推斷項目的根相對於應用程序或測試目錄,但我不想對這些目錄的名稱或結構做任何假設(因爲多個應用程序可能作爲一個包裝中的子包託管)。
我想知道是否有這種類型的問題或Flask對象提供的未記錄方法(如get_root_path)的最佳做法。
正是我在找的,謝謝!我的單線解決方案:'root_path = os.path.sep.join(self.app.instance_path.split(os.path.sep)[: - 1])' – thyrel
@thyrel完全錯過了一點:你應該使用'app.instance_path'而不是任何種類的根路徑。如果您確實需要根路徑,請使用'app.root_path'。如果你想在實例路徑上面的路徑,你可以使用'os.path.join(app.instance_path,'..')',儘管你不應該這樣做。 – davidism