我想延長這大致使用此代碼的應用程序:替代物燒瓶config.from_pyfile
app = Flask('app')
app.config.from_pyfile('default_config.py')
app.config.from_pyfile('local_config.py', silent=True)
在那裏,設置可以使用app.config['value']
被訪問。 在我的擴展中,我只想使用配置文件,沒有Flask應用程序,也沒有創建Flask對象。
我唯一的想法是:
import default_config as dc
import config as cc
vars_dc = [var for var in dir(dc) if not var.startswith('__')]
settings = {var: getattr(dc, var) for var in vars_dc}
vars_cc = [var for var in dir(cc) if not var.startswith('__')]
settings.update({var: getattr(cc, var) for var in vars_cc})
似乎這不是一個很好的解決方案,因爲有很多陷阱,以考慮(在配置文件等錯誤,因此,我將不得不重新實現所有異常處理和東西)
是否有任何模塊具有這樣的功能實現?
*編輯*
#default_config.py
HOST = 'myhostname'
PORT = 7453
DEBUG = False
MY_URLS = []
我寧可不復制任何現有的源代碼(或編寫一個新的解決方案)如果有任何其他的,因爲這將讓我自己的模塊混淆(加載配置文件似乎是基本的功能,所以任何人閱讀我的源代碼會肯定問自己,爲什麼我要重新實現它)。 由於'from py_file'是一個類函數,我需要創建一個類實例以從flask模塊重用它,我也不想這樣做。我沒有看到有任何其他方式可以在不重新實現的情況下重用它 – ProfHase85
因此,您不想複製現有的源代碼,並且您不想自己編寫代碼?爲什麼不只是'import default_config'並使用'default_config.HOST'等來訪問你的變量? –
好的複製現有代碼將意味着冗餘,這將是一種糟糕的風格。 我無法訪問'default_config.HOST'等我的變量,因爲有可能也可能不是'config'文件,它可以但不需要覆蓋任何設置 – ProfHase85