[pypy-issue] Issue #2653: __import__ cannot be overwritten in exec (pypy/pypy)

Michael Howitz issues-reply at bitbucket.org
Wed Sep 13 07:52:43 EDT 2017


New issue 2653: __import__ cannot be overwritten in exec
https://bitbucket.org/pypy/pypy/issues/2653/__import__-cannot-be-overwritten-in-exec

Michael Howitz:

Given the following code:

```python

code = compile('import os', '<string>', 'exec')
glb = {'__builtins__': {'__import__': lambda *a: 42}}

exec(code, glb)
print(glb['os'])

```

PyPy behaves differently from CPython:

* Python 2.7.13 prints `42`
* Python 3.6.2 prints `42`
* PyPy 5.8.0 prints `<module 'os' from '/opt/local/lib/pypy/lib-python/2.7/os.py'>`
* PyPy3 5.5.0 prints `<module 'os' from '/Users/mac/python/pypy3-v5.5.0-osx64/lib-python/3/os.py'>`

This prevents using a custom `__import__` function.




More information about the pypy-issue mailing list