我想用我的Django系統中的settings.py
替換爲settings
包含__init__.py
的模塊。這將嘗試導入以服務器命名的模塊,從而允許按服務器進行設置。我如何使用Python的__import__函數'foo import *'
如果我在導入模塊之前不知道模塊的名稱,那麼我不能使用import
關鍵字,而必須使用__import__
函數。但是這不會將模塊的內容添加到settings
模塊。我需要相當於from MACHINE_NAME import *
。或者我需要一種方法來遍歷vars(m)
(其中m
是加載的模塊)並將它們添加到當前名稱空間。但我無法弄清楚如何引用當前命名空間來完成分配。換句話說,我不能使用setattr(x, ..)
或修改x.__dict__
,因爲我不知道x
使用什麼。
除了使用exec
之外,我現在想不出別的辦法了。這對我來說似乎有點虛弱。我是否錯過了Pythonic內省的某些方面,這將允許我在處理當前範圍的同時操作它?
此處完全重複:http://stackoverflow.com/questions/147507/how-does-one-do-the-equivalent-of-import-from-module-with-pythons-import – u0b34a0f6ae 2009-10-23 18:04:14
謝謝 - 我做了嘗試搜索它,誠實,但當下劃線被剝離,__import__不是一個非常具體的搜索術語... :-) – pdc 2009-10-23 18:41:02