是否可以永久地从Python设置环境变量?

时间:2013-07-15 15:15:25

标签: python operating-system environment-variables

使用os模块我可以获取环境变量的值。例如:

os.environ['HOME']

但是,我无法设置环境变量:

os.environ['BLA'] = "FOO"

它在程序的当前会话中工作但是当我的python程序完成时,我没有看到它改变(或设置)环境变量的值。有没有办法从Python做到这一点?

5 个答案:

答案 0 :(得分:10)

如果您想要的是让您的环境变量在会话中保持不变,那么您可以

unix

bash shell中执行的操作。在~/.bashrc

中附加环境变量
import os
with open(os.path.expanduser("~/.bashrc"), "a") as outfile:
    # 'a' stands for "append"  
    outfile.write("export MYVAR=MYVALUE")

Windows

setx /M MYVAR "MYVALUE"

在程序文件启动中的*.bat

答案 1 :(得分:0)

我不确定。您可以返回变量并以此方式设置它。要做到这一点打印它。

(python program)

...
print foo

(bash)的

set -- $(python test.py)
foo=$1

答案 2 :(得分:0)

如果您想这样做并将它们永久设置为用户帐户,您可以使用 setx 但如果您想要全局,您可以使用 setx /M 但对于您可能需要提升,(我以 Windows 为例,(对于 linux,您可以使用 export

import subprocess
if os.name == 'posix':  # if is in linux
    exp = 'export hi2="youAsWell"'
if os.name == 'nt':  # if is in windows
    exp = 'setx hi2 "youAsWell"'
subprocess.Popen(exp, shell=True).wait()

运行后,您可以转到环境并查看它们是如何添加到我的用户环境中的

enter image description here

答案 3 :(得分:0)

@rantanplan 的回答是正确的。 但是,对于 Unix,如果您希望设置多个环境变量,我建议您在 \n 行的末尾添加一个 outfile,如下所示:< /p>

outfile.write("export MYVAR=MYVALUE\n")

所以代码如下所示:

import os
with open(os.path.expanduser("~/.bashrc"), "a") as outfile:
    # 'a' stands for "append"  
    outfile.write("export MYVAR1=MYVALUE1\n")
    outfile.write("export MYVAR2=MYVALUE2\n")

这将防止在环境变量值的末尾附加“export”字样。

答案 4 :(得分:0)

你可以使用 py-setenv 来完成这项工作。它将访问 Windows 注册表并为您进行更改,通过 python -m pip install py-setenv

安装