• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""
2Launch the Python script on the command line after
3setuptools is bootstrapped via import.
4"""
5
6# Note that setuptools gets imported implicitly by the
7# invocation of this script using python -m setuptools.launch
8
9import tokenize
10import sys
11
12
13def run():
14    """
15    Run the script in sys.argv[1] as if it had
16    been invoked naturally.
17    """
18    __builtins__
19    script_name = sys.argv[1]
20    namespace = dict(
21        __file__=script_name,
22        __name__='__main__',
23        __doc__=None,
24    )
25    sys.argv[:] = sys.argv[1:]
26
27    open_ = getattr(tokenize, 'open', open)
28    with open_(script_name) as fid:
29        script = fid.read()
30    norm_script = script.replace('\\r\\n', '\\n')
31    code = compile(norm_script, script_name, 'exec')
32    exec(code, namespace)
33
34
35if __name__ == '__main__':
36    run()
37