diff options
author | Jason R. Coombs <jaraco@jaraco.com> | 2016-01-25 21:15:02 -0500 |
---|---|---|
committer | Jason R. Coombs <jaraco@jaraco.com> | 2016-01-25 21:15:02 -0500 |
commit | 634b0aefca69d135dd5226a44fac4c44a47c328d (patch) | |
tree | e48f398e3ba06ba05f3d1b55f28a1961b28a9aad /setuptools/launch.py | |
parent | bdd0e2d6a9bc38ae1c8b035364b7b23da0845233 (diff) | |
download | external_python_setuptools-634b0aefca69d135dd5226a44fac4c44a47c328d.tar.gz external_python_setuptools-634b0aefca69d135dd5226a44fac4c44a47c328d.tar.bz2 external_python_setuptools-634b0aefca69d135dd5226a44fac4c44a47c328d.zip |
Rather than re-use globals of setuptools.launch, build a unique namespace in which to launch the script. Prevents imports from occuring relative to 'setuptools' on Python 2. Ref #490.
Diffstat (limited to 'setuptools/launch.py')
-rw-r--r-- | setuptools/launch.py | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/setuptools/launch.py b/setuptools/launch.py index 68cce681..06e15e1e 100644 --- a/setuptools/launch.py +++ b/setuptools/launch.py @@ -10,19 +10,26 @@ import tokenize import sys -def load(): +def run(): """ - Load the script in sys.argv[1] and run it as if it had + Run the script in sys.argv[1] as if it had been invoked naturally. """ - globals()['__file__'] = sys.argv[1] + __builtins__ + script_name = sys.argv[1] + namespace = dict( + __file__ = script_name, + __name__ = '__main__', + __doc__ = None, + ) sys.argv[:] = sys.argv[1:] open_ = getattr(tokenize, 'open', open) - script = open_(__file__).read() + script = open_(script_name).read() norm_script = script.replace('\\r\\n', '\\n') - return compile(norm_script, __file__, 'exec') + code = compile(norm_script, script_name, 'exec') + exec(code, namespace) if __name__ == '__main__': - exec(load()) + run() |