/Tools/scripts/win_add2path.py
http://unladen-swallow.googlecode.com/ · Python · 57 lines · 41 code · 8 blank · 8 comment · 12 complexity · 1f34d808dde6b7def628b9343491ac65 MD5 · raw file
- """Add Python to the search path on Windows
- This is a simple script to add Python to the Windows search path. It
- modifies the current user (HKCU) tree of the registry.
- Copyright (c) 2008 by Christian Heimes <christian@cheimes.de>
- Licensed to PSF under a Contributor Agreement.
- """
- import sys
- import site
- import os
- import _winreg
- HKCU = _winreg.HKEY_CURRENT_USER
- ENV = "Environment"
- PATH = "PATH"
- DEFAULT = u"%PATH%"
- def modify():
- pythonpath = os.path.dirname(os.path.normpath(sys.executable))
- scripts = os.path.join(pythonpath, "Scripts")
- appdata = os.environ["APPDATA"]
- if hasattr(site, "USER_SITE"):
- userpath = site.USER_SITE.replace(appdata, "%APPDATA%")
- userscripts = os.path.join(userpath, "Scripts")
- else:
- userscripts = None
- with _winreg.CreateKey(HKCU, ENV) as key:
- try:
- envpath = _winreg.QueryValueEx(key, PATH)[0]
- except WindowsError:
- envpath = DEFAULT
- paths = [envpath]
- for path in (pythonpath, scripts, userscripts):
- if path and path not in envpath and os.path.isdir(path):
- paths.append(path)
- envpath = os.pathsep.join(paths)
- _winreg.SetValueEx(key, PATH, 0, _winreg.REG_EXPAND_SZ, envpath)
- return paths, envpath
- def main():
- paths, envpath = modify()
- if len(paths) > 1:
- print "Path(s) added:"
- print '\n'.join(paths[1:])
- else:
- print "No path was added"
- print "\nPATH is now:\n%s\n" % envpath
- print "Expanded:"
- print _winreg.ExpandEnvironmentStrings(envpath)
- if __name__ == '__main__':
- main()