有没有PATH
办法使用python以平台独立的方式修改环境变量?
类似于os.path.join()
?
Answers:
您应该能够进行修改os.environ
。
由于os.pathsep
是分隔不同路径的字符,因此应使用此字符追加每个新路径:
os.environ["PATH"] += os.pathsep + path
或者,如果要在列表中添加多个路径:
os.environ["PATH"] += os.pathsep + os.pathsep.join(pathlist)
如前所述,os.path.join
在必须从单独的部分构造路径的情况下,也可以用于必须附加的每个路径。
os.pathsep
我提到的(特定于PATH)吗?
os.path.sep != os.pathsep
。
请注意,这os.environ
实际上不是字典。这是一个类似于字典的特殊对象,它实际上使用setenv在当前进程中设置环境变量。
>>> os.environ.__class__
<class os._Environ at 0x100472050>
>>> import os
>>> os.environ["HELLO"] = "WORLD"
>>> os.getenv("HELLO")
'WORLD'
这意味着PATH
(和其他环境变量)对于在同一进程中运行的C代码将是可见的。
(由于注释不能包含格式,因此我必须在答案中注明,但是我觉得这很重要。这实际上是对注释的评论,因为它不等同于'export'。)
在Python中修改环境变量时需要注意的警告是,没有等效的“ export” shell命令。无法将更改注入当前流程,只能将其注入子流程。
os.system
,以启动其他进程。否则,这毫无意义。os.popen
subprocess.Popen
export
导致将变量复制到所有子进程的环境中,但对父进程没有影响。