[英]How do I implement 'import … as' using the __import__() function?
[英]How do I do 'from foo import *' using Python's __import__ function
我想更換settings.py
以作為目錄實施的模塊在我的Django的系統settings
包含__init__.py
。 這將嘗試導入以服務器命名的模塊,從而允許按服務器設置。
如果在導入模塊之前不知道模塊的名稱,則不能使用import
關鍵字,而必須使用__import__
函數。 但這不會將模塊的內容添加到settings
模塊。 我需要等價from MACHINE_NAME import *
。 或者,我需要一種遍歷vars(m)
(其中m
是已加載的模塊)並將它們添加到當前名稱空間的方法。 但是我不知道如何引用當前名稱空間以進行分配。 換句話說,我不能使用setattr(x, ..)
或修改x.__dict__
,因為我不知道該對x
使用什么。
除了使用exec
之外,我想不出其他任何嘗試。 對我來說,這似乎有些微弱。 我是否缺少Pythonic內省的某個方面,可以讓我在仍處於當前范圍內的情況下進行操作?
對於基於lang設置的類似情況,我在messages.py模塊中導入了不同的消息,這類似於
# set values in current namespace
for name in vars(messages):
v = getattr(messages, name)
globals()[name] = v
順便說一句,為什么要為settings.py創建一個包? 您想做什么都可以直接在settings.py中完成?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.