对于代码:
#!/usr/bin/python
src = """
print '!!!'
import os
"""
obj = compile(src, '', 'exec')
eval(obj, {'__builtins__': False})
我得到输出:
!!!
Traceback (most recent call last):
File "./test.py", line 9, in <module>
eval(obj, {'__builtins__': False})
File "", line 3, in <module>
ImportError: __import__ not found
“打印”和“导入”都是语言构造。为什么“eval”限制使用“import”但不限制“print”?
附:我正在使用 python 2.6
更新:问题不是“为什么导入不起作用?”但是“为什么印刷有用?”是否有一些架构限制或其他限制?
The __import__
方法被调用import
关键词:python.org http://docs.python.org/library/functions.html?highlight=import#__import__
如果您希望能够导入模块,您需要保留__import__
内置方法:
src = """
print '!!!'
import os
"""
obj = compile(src, '', 'exec')
eval(obj, {'__builtins__': {'__import__':__builtins__.__import__}})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)