Skip to main content
 首页 » 编程设计

python从字符串中导入代码

2025年05月04日19yyy_WW

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

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

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

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

请您参考如下方法:

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

# 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__