1

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

我已经有一个数据库设置,所以我可以得到纯文本的代码。但是现在我想知道是否有任何方法可以导入 python 脚本,而不是从文件中,而是从包含 python 代码的变量中。

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

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

1 回答 1

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__
于 2012-09-30T23:28:03.087 回答