使用os
模块我可以获得环境变量的值。例如:
os.environ['HOME']
但是,我无法设置环境变量:
os.environ['BLA'] = "FOO"
它在程序的当前会话中工作,但是当我的 python 程序完成时,我没有看到它更改(或设置)环境变量的值。有没有办法从 Python 做到这一点?
使用os
模块我可以获得环境变量的值。例如:
os.environ['HOME']
但是,我无法设置环境变量:
os.environ['BLA'] = "FOO"
它在程序的当前会话中工作,但是当我的 python 程序完成时,我没有看到它更改(或设置)环境变量的值。有没有办法从 Python 做到这一点?
如果你想要的是让你的环境变量在会话中持续存在,你可以
对于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
Program Files 的 Startup 中
如果你想这样做并将它们永久设置到用户帐户中,你可以使用setx 但如果你想作为全局,你可以使用setx /M 但为此你可能需要提升,(我以 windows 为例,(对于 linux你可以使用导出)
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()
运行后,您可以转到环境并查看它们是如何添加到我的用户环境中的
我不知道。您可以返回变量并以这种方式设置它。为此打印它。
(蟒蛇程序)
...
print foo
(重击)
set -- $(python test.py)
foo=$1
@rantanplan 的回答是正确的。但是,对于Unix,如果您希望设置多个环境变量,我建议您\n
在行尾添加 a,outfile
如下所示:
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")
这将防止在环境变量值的末尾附加“导出”字样。
您可以使用 py-setenv 来完成这项工作。它将访问 Windows 注册表并为您进行更改,通过安装python -m pip install py-setenv