如何在Python中动态导入?

时间:2013-07-24 11:39:24

标签: python

我是Python的新手,任何人都可以让我知道如何在python脚本中执行以下两个导入,然后是另一行,而我在每个循环中都会更改? (以下三行位于“for”循环中,其计数器为“i”)

import Test_include_i
from Test_include_i import*
model = Test_include_i.aDefinedFunction

非常感谢:)

3 个答案:

答案 0 :(得分:6)

这不是一个好主意,但这是它的实现:

from importlib import import_module # Awesome line! :)

for i in range(1000):
    test_include = import_module("Test_include_%s" % i)
    model = test_include.aDefinedFunction

关于所提供方法之间的差异:

  • __import__是处理from bla import blubbimport bla语句的低级接口。它的直接用途是根据现在不鼓励的文件。
  • importlib.import_module__import__的便利包装,是首选。导入的模块将记录在sys.modules中,因此将被缓存。如果您在会话期间更改了代码并想要使用新版本,则必须使用imp.reload显式重新加载。
  • imp.load_module更接近内部,并将始终为您加载模块的最新版本,即如果已加载load_module相当于imp.reload调用模块。但是要使用此函数,您必须提供所有4个参数,基本上是imp.find_module返回的参数。

答案 1 :(得分:1)

您需要使用__import__函数,或许importlib,但您应该考虑这是否是您真正想要做的。也许解释一下你想要实现的目标,并且可能会有更好的方法。

答案 2 :(得分:0)

您可以使用imp.load_module(),它接受​​字符串作为模块名称。见http://docs.python.org/2/library/imp.html#imp.load_module