1"""Add Python to the search path on Windows 2 3This is a simple script to add Python to the Windows search path. It 4modifies the current user (HKCU) tree of the registry. 5 6Copyright (c) 2008 by Christian Heimes <christian@cheimes.de> 7Licensed to PSF under a Contributor Agreement. 8""" 9 10import sys 11import site 12import os 13import _winreg 14 15HKCU = _winreg.HKEY_CURRENT_USER 16ENV = "Environment" 17PATH = "PATH" 18DEFAULT = u"%PATH%" 19 20def modify(): 21 pythonpath = os.path.dirname(os.path.normpath(sys.executable)) 22 scripts = os.path.join(pythonpath, "Scripts") 23 appdata = os.environ["APPDATA"] 24 if hasattr(site, "USER_SITE"): 25 userpath = site.USER_SITE.replace(appdata, "%APPDATA%") 26 userscripts = os.path.join(userpath, "Scripts") 27 else: 28 userscripts = None 29 30 with _winreg.CreateKey(HKCU, ENV) as key: 31 try: 32 envpath = _winreg.QueryValueEx(key, PATH)[0] 33 except WindowsError: 34 envpath = DEFAULT 35 36 paths = [envpath] 37 for path in (pythonpath, scripts, userscripts): 38 if path and path not in envpath and os.path.isdir(path): 39 paths.append(path) 40 41 envpath = os.pathsep.join(paths) 42 _winreg.SetValueEx(key, PATH, 0, _winreg.REG_EXPAND_SZ, envpath) 43 return paths, envpath 44 45def main(): 46 paths, envpath = modify() 47 if len(paths) > 1: 48 print "Path(s) added:" 49 print '\n'.join(paths[1:]) 50 else: 51 print "No path was added" 52 print "\nPATH is now:\n%s\n" % envpath 53 print "Expanded:" 54 print _winreg.ExpandEnvironmentStrings(envpath) 55 56if __name__ == '__main__': 57 main() 58