在我的一些Django應用程序中,我使用settings_local.py
文件覆蓋各種環境(例如開發,測試和生產)上不同的設置。我已經最初使用下面的代碼,包括其在settings.py
內容:Python:'import *'vs execfile
try:
from settings_local import *
except ImportError:
sys.stderr.write("The settings_local.py file is missing.\n")
DEBUG=False
我最近發現了execfile
功能,切換到類似:
try:
execfile(path.join(PROJECT_ROOT, "settings_local.py"))
except IOError:
sys.stderr.write("The settings_local.py file is missing.\n"
DEBUG=False
兩個工作如預期,但我m好奇我是否缺少任何陷阱,一般來說哪種方法更值得推薦,爲什麼。
'__file__'可以很容易地通過參數提供。主要區別在於,無論執行多少次「import module」,都只導入一次模塊(exec每次調用時執行文件),而「import」不需要顯式路徑指向文件所以它也可以在一個zip檔案裏面工作)。 – jfs 2012-07-28 19:40:19
@ J.F.Sebastian這應該是一個答案。 – Marcin 2012-07-28 21:49:07
我發現有關execfile的一個優點(與導入相反)是我可以動態執行它。具體來說,如果我有一個設置模塊列表,我可以通過列表循環,每個調用execfile。有沒有辦法做到這一點與導入? – 2012-07-29 08:09:43