从Python中的列表或字典导入模块?

时间:2013-10-08 21:08:17

标签: python import nuke

我非常精通Python,但这对我来说已经有一段时间了。

我有一个充满脚本的文件夹,我工作室的艺术家在Nuke中使用这些脚本。为了从内部访问它们,我需要通过Nuke在加载时读取的init.py文件导入它们。

我希望能够通过全局搜索找到所有适用的值或者声明列表来列出这些值:

my_list = ['mod_1', 'mod_2', 'mod_3']

然而,我一直无法找到能够解决这个问题的方法。我知道我可以使用变量名来查找模块并通过以下方式导入它们:

module = getattr(__import__(package, fromlist=[name]), name)

module = __import__(var)

但这两种方法都要求我为我导入的模块指定一个名称。

我正在寻找一种方法来做这些事情:

capture = glob.glob('/scriptLocation/*.py')
for i in capture:
    import i

my_list = ['mod_1', 'mod_2', 'mod_3']
for i in capture:
    import i

TIA!

1 个答案:

答案 0 :(得分:0)

试试这个:

modules = map(__import__, moduleNames)

验证link for more :(例16.15)

>>> moduleNames = ['sys', 'os', 're', 'unittest'] 1
>>> moduleNames
['sys', 'os', 're', 'unittest']
>>> modules = map(__import__, moduleNames)        2
>>> modules                                       3
[<module 'sys' (built-in)>,
<module 'os' from 'c:\Python22\lib\os.pyc'>,
<module 're' from 'c:\Python22\lib\re.pyc'>,
<module 'unittest' from 'c:\Python22\lib\unittest.pyc'>]
>>> modules[0].version                            4
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'
>>> import sys
>>> sys.version
'2.2.2 (#37, Nov 26 2002, 10:24:37) [MSC 32 bit (Intel)]'