移植new.module()到Python3
问题描述:
我怎么会在Python3实现这个:移植new.module()到Python3
def import_code(code, name, add_to_sys_modules=False):
module = new.module(name)
sys.modules[name] = module
do_bookkeeping(module)
exec(code in module.__dict__)
return module
好像既不__import__
也不importlib
实际上回报可用于记账模块。
答
的new
模块已在Python 3.删除您可以使用types.ModuleType
代替,在这两个Python 2和3
你有你的电话exec()
错;它应该是:
exec(code, module.__dict__)
您正在尝试从code in module.__dict__
表达式执行False
结果来代替。使用exec()
的功能也适用在Python 2,所以整个主要版本以下工作:
import types
def import_code(code, name, add_to_sys_modules=False):
module = types.ModuleType(name)
if add_to_sys_modules:
sys.modules[name] = module
do_bookkeeping(module)
exec(code, module.__dict__)
return module
这只是错误在打字的问题提出,实际的问题是正在消失的'new'模块,没办法做'new.module(name)'。将修改我的问题 – Kimvais 2014-09-01 09:42:16
@Kimvais:已经解决。 – 2014-09-01 09:43:01