django - 变量变换时导入不同的模块

时间:2014-08-22 07:11:28

标签: python django

我想导入不同的模块作为变量a。

#views.py
path = os.path.normpath(os.path.join(here, 'module/%s' % a))
sys.path.append(path)
from foo import bar
sys.path.remove(path)

我的文件夹显示如下:

djangoapp---module----a----index.py & __init.py
              |-------b----index.py & __init.py
              views.py

我这样做是有效的,但是当变量a发生变化时,还有其他方法可以切换模块吗?

我的朋友告诉我最好不要在此过程中修改sys.path的内容。

1 个答案:

答案 0 :(得分:1)

您可以从其他位置导入,而不是摆弄sys.path,例如:

module_name = 'a.foo'
module = __import__(module_name, globals(), locals(), ['*'])

__import__的文档中查看更多内容。

也许importlib.import_module甚至是更好的选择。