Google App Engine中imp.load_module()的替换功能?

时间:2011-01-03 08:46:40

标签: python google-app-engine import

Google App Engine中的imp模块为空 因此,是否有另一种方法来执行imp.load_module()函数的作用 - 即从文件对象返回模块对象?

(或者甚至更普遍 - 甚至是从任何随机代码片段(发送到exec()或其他东西)生成模块对象的方法?)

2 个答案:

答案 0 :(得分:1)

好吧,你可以尝试:

>>> import types
>>> foo = types.ModuleType('foo')

但它显然是空的,你必须以其他方式“填充”它,包括

>>> exec('bar=2', foo.__dict__)
>>> foo.bar
2

最大的问题是为什么你会这么想。执行“随机代码”通常是一个非常糟糕的主意。 :-)这在任何情况下都是一个安全漏洞,如果你以某种方式允许编辑这个TTW,你只是要求某人破解你的网站。

答案 1 :(得分:0)

你看过__import__了吗? See here...它也会返回一个模块。您使用imp的原因是什么?