python从字符串导入代码

时间:2012-09-30 23:20:15

标签: python google-app-engine

我正在使用谷歌应用引擎,我试图基本上允许用户上传代码,以后它将由服务器执行。我还必须能够将变量发送到脚本,这就是为什么在我运行桌面上的所有内容时,我动态导入所有内容(因为脚本的名称存储在变量中)。但是由于谷歌应用引擎环境中的文件系统,我现在无法做到这一点。

我已经有了数据库设置,因此我可以用纯文本格式获取代码。但现在我想知道是否有任何方法可以导入python脚本,而不是从文件但是从包含python代码的变量。

例如,如果这是纯文本代码,我怎么能让它正确执行:

code = """
def Main(var):
    print "you entered: " + var
"""

1 个答案:

答案 0 :(得分:6)

首先,为代码创建一个模块:

# define module_name somewhere
import types
module = types.ModuleType(module_name)

您可能也想注册该模块:

import sys
sys.modules[module_name] = module

然后编译代码:

# source should the code to execute
# filename should be a pseudo-filename that the code's from
# (it doesn't actually have to exist; it's used for error messages)
code_object = compile(source, filename, 'exec')

然后在模块的上下文中执行代码对象:

exec code_object in module.__dict__