Mercurial > cpython-lru_cache-weakref
annotate Tools/scripts/win_add2path.py @ 64166:d0e9febfa00a 3.1
Merged revisions 84172 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r84172 | martin.v.loewis | 2010-08-18 18:12:23 +0200 (Mi, 18 Aug 2010) | 2 lines
Restore GIL in nis_cat in case of error.
........
| author | Martin v. Löwis <martin@v.loewis.de> |
|---|---|
| date | Thu, 19 Aug 2010 09:03:03 +0000 |
| parents | 48989ecff804 |
| children | 593d6417edf1 |
| rev | line source |
|---|---|
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
1 """Add Python to the search path on Windows |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
2 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
3 This is a simple script to add Python to the Windows search path. It |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
4 modifies the current user (HKCU) tree of the registry. |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
5 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
6 Copyright (c) 2008 by Christian Heimes <christian@cheimes.de> |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
7 Licensed to PSF under a Contributor Agreement. |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
8 """ |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
9 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
10 import sys |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
11 import site |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
12 import os |
|
47254
1546c1fb8f82
#2879: rename _winreg to winreg.
Georg Brandl <georg@python.org>
parents:
44748
diff
changeset
|
13 import winreg |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
14 |
|
47254
1546c1fb8f82
#2879: rename _winreg to winreg.
Georg Brandl <georg@python.org>
parents:
44748
diff
changeset
|
15 HKCU = winreg.HKEY_CURRENT_USER |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
16 ENV = "Environment" |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
17 PATH = "PATH" |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
18 DEFAULT = u"%PATH%" |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
19 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
20 def modify(): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
21 pythonpath = os.path.dirname(os.path.normpath(sys.executable)) |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
22 scripts = os.path.join(pythonpath, "Scripts") |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
23 appdata = os.environ["APPDATA"] |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
24 if hasattr(site, "USER_SITE"): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
25 userpath = site.USER_SITE.replace(appdata, "%APPDATA%") |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
26 userscripts = os.path.join(userpath, "Scripts") |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
27 else: |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
28 userscripts = None |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
29 |
|
47254
1546c1fb8f82
#2879: rename _winreg to winreg.
Georg Brandl <georg@python.org>
parents:
44748
diff
changeset
|
30 with winreg.CreateKey(HKCU, ENV) as key: |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
31 try: |
|
47254
1546c1fb8f82
#2879: rename _winreg to winreg.
Georg Brandl <georg@python.org>
parents:
44748
diff
changeset
|
32 envpath = winreg.QueryValueEx(key, PATH)[0] |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
33 except WindowsError: |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
34 envpath = DEFAULT |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
35 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
36 paths = [envpath] |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
37 for path in (pythonpath, scripts, userscripts): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
38 if path and path not in envpath and os.path.isdir(path): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
39 paths.append(path) |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
40 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
41 envpath = os.pathsep.join(paths) |
|
47254
1546c1fb8f82
#2879: rename _winreg to winreg.
Georg Brandl <georg@python.org>
parents:
44748
diff
changeset
|
42 winreg.SetValueEx(key, PATH, 0, winreg.REG_EXPAND_SZ, envpath) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
43 return paths, envpath |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
44 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
45 def main(): |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
46 paths, envpath = modify() |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
47 if len(paths) > 1: |
|
57147
48989ecff804
Merged revisions 76158 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47254
diff
changeset
|
48 print("Path(s) added:") |
|
48989ecff804
Merged revisions 76158 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47254
diff
changeset
|
49 print('\n'.join(paths[1:])) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
50 else: |
|
57147
48989ecff804
Merged revisions 76158 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47254
diff
changeset
|
51 print("No path was added") |
|
48989ecff804
Merged revisions 76158 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47254
diff
changeset
|
52 print("\nPATH is now:\n%s\n" % envpath) |
|
48989ecff804
Merged revisions 76158 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47254
diff
changeset
|
53 print("Expanded:") |
|
48989ecff804
Merged revisions 76158 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47254
diff
changeset
|
54 print(winreg.ExpandEnvironmentStrings(envpath)) |
|
44748
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
55 |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
56 if __name__ == '__main__': |
|
4a67673e3481
Merged revisions 60043-60052 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents:
diff
changeset
|
57 main() |
