在Python中从列表或dict导入模块?

在Python中从列表或dict导入模块?,python,import,nuke,Python,Import,Nuke,我相当精通Python,但是这对我来说已经是一个问题了相当长的一段时间 我有一个文件夹,里面装满了我工作室的艺术家在Nuke中使用的脚本。为了从内部访问它们,我需要通过Nuke加载时读取的init.py文件导入它们 我希望能够列出这些值,或者通过全球搜索找到所有适用的值,或者通过声明的列表,如: my_list = ['mod_1', 'mod_2', 'mod_3'] 然而,我一直无法找到一种方法来处理这个问题。我知道我可以使用变量名查找模块并通过以下方式导入: module = getat

我相当精通Python,但是这对我来说已经是一个问题了相当长的一段时间

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

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

my_list = ['mod_1', 'mod_2', 'mod_3']
然而,我一直无法找到一种方法来处理这个问题。我知道我可以使用变量名查找模块并通过以下方式导入:

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

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

我正在寻找一种方法来做以下事情:

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

蒂亚

试试这个:

modules = map(__import__, moduleNames)
验证这一点:(示例16.15)

模块名称=['sys','os','re','unittest']1 >>>模块名称 ['sys','os','re','unittest'] >>>模块=映射(导入,模块名称)2 >>>单元3 [, , , ] >>>模块[0]。版本4 “2.2.2(2002年11月26日10:24:37)[MSC 32位(英特尔)]” >>>导入系统 >>>sys.version “2.2.2(2002年11月26日10:24:37)[MSC 32位(英特尔)]”
谢谢!我一回到办公室就把它准备好了!干杯工作得很好!非常感谢。唯一的问题是记住哪个索引是哪个模块,但老实说,与每次导入必须写5行相比,这不是一个问题。再次感谢!从
\uuuu import\uuuu
文档:由于此函数是供Python解释器使用的,而不是供一般使用,因此最好使用
importlib.import\u module()
以编程方式导入模块。
my_list = ['mod_1', 'mod_2', 'mod_3']
for i in capture:
    import i
modules = map(__import__, moduleNames)
>>> 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)]'