"""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() |