动态导入模块的函数调用

4

我有一个名为module1.py的模块:

import os
def main():
    command=os.system("dir")
    return command,"str"

我已经使用以下方法动态导入它:
mod = __import__("modules."module1)

它的工作效果很好。但是现在我想调用module1模块中的"main"函数。 mod.main()不起作用。为什么?如何调用module1模块的main()函数?
非常感谢。

3
我非常怀疑__import__("modules."module1)能够正常工作,因为这不是有效的Python语法。 - Martijn Pieters
他说的没错,此外这里描述的方法确实很好用。我昨天刚做了类似的事情。 - Joran Beasley
为什么不使用importlib模块呢? - Martijn Pieters
1个回答

5

我更喜欢使用fromlist参数。

mod = __import__("modules.%s" % (module1), fromlist=["main"])
mod.main()

根据您的使用情况,您可能还需要指定本地变量和全局变量。

mod = __import__("modules.%s" % (module1), locals(), globals(), ["main"])

非常简单和完美!!非常感谢! - user1618465

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接