当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中使环境变量更改?

如何解决《如何在Python中使环境变量更改?》经验,为你挑选了4个好方法。

根据我的阅读,Python实例中对环境变量的任何更改仅在该实例中可用,并在实例关闭后消失.是否有任何方法可以通过将它们提交给系统来使它们坚持下去?

我需要这样做的原因是因为在我工作的工作室,像Maya这样的工具在很大程度上依赖于环境变量来配置跨多个平台的路径.

我的测试代码是

import os
os.environ['FAKE'] = 'C:\\'

打开另一个Python实例并请求os.environ['FAKE']产生一个KeyError.

注意:可移植性将是一个问题,但我正在编写的小API将能够检查操作系统版本并在必要时触发不同的命令.

也就是说,我已经走了使用Windows注册表技术的路线,只会编写替代方法,在其他平台上调用shell脚本,因为它们成为需求.



1> Zoredache..:

通过将它们提交给系统来使它们坚持下去?

我觉得你在这里有点困惑.没有"系统"环境.每个进程都有自己的环境作为其内存的一部分.流程只能改变自己的环境.进程可以为其创建的进程设置初始环境.

如果您确实认为需要为系统设置环境变量,则需要在最初加载的位置更改它们,例如Windows上的注册表或Linux上的shell配置文件.


通过"系统"环境变量,Soviut指的是系统范围内建立的变量,例如Unix中的/ etc/profile或Windows中的System(vs. User)环境变量.我认为从他的背景来看这很清楚.

2> Jordan Stefa..:

您可以在命令行中使用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上`SETX`的一个大问题是它不会改变当前环境甚至是从它启动的命令shell - 你必须退出shell并启动一个新的.

3> Jeff Bauer..:

在Windows下,您可以使用此配方通过注册表对环境变量进行持久更改,尽管它看起来有点矫枉过正.

为了回应Brian的问题,你想要完成什么?可能有一种更简单的方法.


为什么设置环境的变量从(将)系统管理员的标准语言持续被称为过度杀手?

4> DNS..:

我不相信你能做到这一点; 我能想到两种解决方法.

    os.putenv函数为您开始的进程设置环境,即os.system,popen等.根据您要执行的操作,可能您可以拥有一个设置变量的主Python实例,然后生成新实例.

    您可以运行shell脚本或批处理文件来为您设置它,但这样便可移植性降低.看到这篇文章:

http://code.activestate.com/recipes/159462/

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有