对于代码:
#!/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
“print”和“import”都是语言结构。为什么“eval”限制使用“import”,但不限制“print”?
附注:我正在使用Python 2.6
更新:问题不是“为什么import不起作用?”,而是“为什么print可以工作?”是否存在某些架构限制或其他原因?