跳到主要内容

Windows设置环境变量

文章信息

创建日期:2024年12月28日

自从用了WTG后,绿色软件成为了我的首选,绿色软件也称为便携式/可移动软件(英文称为Portable Application、Portable Software或Green Software)。即使是编程语言环境我也希望是便携式的,这样就能在任何一个系统运行脚本。

基本上所有的编程语言官方提供的安装包都会有便携式压缩包,但是解压后却并不能直接在cmd中调用,因为还没有设置环境变量。

环境变量是一种用于存储操作系统中配置数据的机制,可以在运行时影响程序或进程的行为。这些变量通常以键值对的形式存储,例如 KEY=VALUE,并在操作系统的上下文中使用。

以Python为例,即使在官网下载便携式压缩包,解压后,也一样不能在cmd命令行用调用python

管理员:命令提示符
Microsoft Windows [版本 10.0.26100.1742]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>python
'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。

C:\Users\Administrator>

脚本如下:

import os
import winreg

def add_to_system_path(paths):
"""
批量添加路径到系统环境变量 Path 中。

:param paths: 需要添加的路径列表
"""
try:
# 打开注册表中的系统环境变量键
reg_key = winreg.OpenKey(
winreg.HKEY_LOCAL_MACHINE,
r"SYSTEM\CurrentControlSet\Control\Session Manager\Environment",
0,
winreg.KEY_READ | winreg.KEY_WRITE,
)

# 读取现有的 Path
current_path, _ = winreg.QueryValueEx(reg_key, "Path")

# 将新路径添加到 Path 中,避免重复添加
current_paths = current_path.split(";")
updated_paths = current_paths[:]
for path in paths:
if path and path not in current_paths:
updated_paths.append(path)

# 写回更新后的 Path
new_path = ";".join(updated_paths)
winreg.SetValueEx(reg_key, "Path", 0, winreg.REG_EXPAND_SZ, new_path)
winreg.CloseKey(reg_key)

# 通知系统环境变量已更新
os.system("setx /M Path \"%s\"" % new_path)
print("Path 环境变量更新成功!")
except PermissionError:
print("权限不足,请以管理员身份运行此脚本。")
except Exception as e:
print(f"更新 Path 时出错:{e}")

if __name__ == "__main__":
# 要添加的路径列表
paths_to_add = [
r"D:\工具\Python312",
r"D:\工具\Python312\Scripts",
]

add_to_system_path(paths_to_add)

按照注释在倒数第5行开始填写需要添加的环境变量,一般就是可执行文件的绝对路径。设置好环境变量后关闭所有命令行窗口并重新打开,就会生效了。

管理员:命令提示符
Microsoft Windows [版本 10.0.26100.1742]
(c) Microsoft Corporation。保留所有权利。

C:\Users\Administrator>python
Python 3.12.8 (tags/v3.12.8:2dc476b, Dec 3 2024, 19:30:04) [MSC v.1942 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>