根据我的阅读,Python实例中对环境变量的任何更改仅在该实例中可用,并在实例关闭后消失.是否有任何方法可以通过将它们提交给系统来使它们坚持下去?
我需要这样做的原因是因为在我工作的工作室,像Maya这样的工具在很大程度上依赖于环境变量来配置跨多个平台的路径.
我的测试代码是
import os os.environ['FAKE'] = 'C:\\'
打开另一个Python实例并请求os.environ['FAKE']
产生一个KeyError
.
注意:可移植性将是一个问题,但我正在编写的小API将能够检查操作系统版本并在必要时触发不同的命令.
也就是说,我已经走了使用Windows注册表技术的路线,只会编写替代方法,在其他平台上调用shell脚本,因为它们成为需求.
通过将它们提交给系统来使它们坚持下去?
我觉得你在这里有点困惑.没有"系统"环境.每个进程都有自己的环境作为其内存的一部分.流程只能改变自己的环境.进程可以为其创建的进程设置初始环境.
如果您确实认为需要为系统设置环境变量,则需要在最初加载的位置更改它们,例如Windows上的注册表或Linux上的shell配置文件.
您可以在命令行中使用SETX.
默认情况下,这些操作会在USER环境中进行.要设置和修改SYSTEM变量,请使用/ M标志
import os env_var = "BUILD_NUMBER" env_val = "3.1.3.3.7" os.system("SETX {0} {1} /M".format(env_var,env_val))
在Windows下,您可以使用此配方通过注册表对环境变量进行持久更改,尽管它看起来有点矫枉过正.
为了回应Brian的问题,你想要完成什么?可能有一种更简单的方法.
我不相信你能做到这一点; 我能想到两种解决方法.
该os.putenv
函数为您开始的进程设置环境,即os.system,popen等.根据您要执行的操作,可能您可以拥有一个设置变量的主Python实例,然后生成新实例.
您可以运行shell脚本或批处理文件来为您设置它,但这样便可移植性降低.看到这篇文章:
http://code.activestate.com/recipes/159462/