]>
Commit | Line | Data |
---|---|---|
1 | """ | |
2 | Launch the Python script on the command line after | |
3 | setuptools 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 | ||
9 | import tokenize | |
10 | import sys | |
11 | ||
12 | ||
13 | def 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 | ||
35 | if __name__ == '__main__': | |
36 | run() |