mirror of
https://github.com/python/cpython.git
synced 2025-07-08 03:45:36 +00:00

requires them. Disable executable bits and shebang lines in test and benchmark files in order to prevent using a random system python, and in source files of modules which don't provide command line interface. Fixed shebang lines in the unittestgui and checkpip scripts.
57 lines
1.6 KiB
Python
57 lines
1.6 KiB
Python
"""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 = "%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 OSError:
|
|
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()
|