如何在Python中按内容创建模块对象

时间:2015-09-11 13:57:28

标签: python python-2.7

我有一个包含python代码的字符串。有没有办法使用没有附加文件的字符串创建python模块对象?

content = "import math\n\ndef f(x):\n    return math.log(x)"

my_module = needed_function(content) # <- ???

print my_module.f(2) # prints 0.6931471805599453

请不要建议使用evalexec。我需要一个python模块对象。谢谢!

1 个答案:

答案 0 :(得分:6)

您可以使用imp模块创建一个空模块,然后使用exec将模块加载到模块中。

content = "import math\n\ndef f(x):\n    return math.log(x)"

import imp
my_module = imp.new_module('my_module')
exec content in my_module.__dict__ # in python 3, use exec() function

print my_module.f(2)

这是我的答案,但我不建议在实际应用中使用它。