我有一个包含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
请不要建议使用eval
或exec
。我需要一个python模块对象。谢谢!
答案 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)
这是我的答案,但我不建议在实际应用中使用它。