任何其他答案都会将 exe 添加到当前 python 会话的路径,并且只有“setx”会将其添加到 USER 路径(删除以前的路径,除非你将它们保存在某个地方)。
我当前正在使用 cx_freeze,并且有一个选项可以添加到 .msi 构建器而不是 .exe 构建器的系统路径。我的目标是让 exe 变得轻量级,同时可以从任何地方访问。我还计划使其通用,这样它就可以在 Windows 和 Linux 上运行 我尝试使用
os.environ['PATH'] = os.environ['PATH'] += os.pathsep(directory)
但这只会为当前的 python 会话编辑它
import winreg
def main():
def add_to_path(directory, user=False):
if user:
key = winreg.HKEY_CURRENT_USER
subkey = 'Environment'
else:
key = winreg.HKEY_LOCAL_MACHINE
subkey = r'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'
with winreg.OpenKey(key, subkey, 0, winreg.KEY_ALL_ACCESS) as regkey:
path_value, _ = winreg.QueryValueEx(regkey, 'Path')
print(path_value)
path_value += ';' + directory
winreg.SetValueEx(regkey, 'Path', 0, winreg.REG_EXPAND_SZ, path_value)
# Example usage
directory_path = filepath
add_to_path(directory_path)
if __name__ == '__main__':
import subprocess
subprocess.run('pip install pyuac'.split())
subprocess.run('pip install pypiwin32'.split())
#require admin to make sure modules are installed correctly
import pyuac
if not pyuac.isUserAdmin():
pyuac.runAsAdmin()
else:
main()
这似乎适用于 Windows,需要管理员