Python:跨平台修改PATH环境变量的方法

109 投票
4 回答
109962 浏览
提问于 2025-04-15 15:41

有没有办法用Python以平台无关的方式修改PATH环境变量呢?

有没有类似于os.path.join()这样的方式?

4 个回答

7

在Python中修改环境变量时,有一点需要注意,就是没有类似于“export”这个命令的东西。也就是说,你不能直接把修改的环境变量应用到当前的程序里,只能让它影响到新启动的子程序。

21

请注意,os.environ 实际上并不是一个字典。它是一个特殊的、类似字典的对象,实际上是通过 setenv 来设置当前进程中的环境变量。

>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'

这意味着 PATH(以及其他环境变量)会在同一个进程中被运行的 C 代码所看到。

(因为评论不能包含格式,所以我必须把这个放在回答里,但我觉得这是一个重要的观点。其实这是对 关于没有等同于 'export' 的评论 的一个补充。)

217

你应该能够修改 os.environ

因为 os.pathsep 是用来分隔不同路径的字符,所以你应该用这个来添加每个新的路径:

os.environ["PATH"] += os.pathsep + path

或者,如果你有多个路径要添加在一个列表里:

os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)

正如你提到的,os.path.join 也可以用来处理每个你需要添加的单独路径,特别是当你需要从不同的部分构建这些路径的时候。

撰写回答