Python中如何设置环境变量

2024-04-25 17:59:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在python脚本中设置一些环境变量,我希望从python调用的所有其他脚本(shell脚本)都是子进程,以查看环境变量的设置。值是一个数字。

如果我做了os.environ["DEBUSSY"] = 1,它会抱怨说1必须是字符串。 我还想知道,一旦设置了python中的环境变量(在脚本的后面部分),如何读取它。


Tags: 字符串脚本进程osenviron环境变量数字shell
3条回答

环境变量必须是字符串,因此使用

os.environ["DEBUSSY"] = "1"

将变量DEBUSSY设置为字符串1

要稍后访问此变量,只需使用:

print(os.environ["DEBUSSY"])

子进程自动继承父进程的环境变量——不需要对您的部分执行特殊操作。

您可能需要考虑代码健壮性的一些其他方面

将整数值变量存储为环境变量时,请尝试

os.environ['DEBUSSY'] = str(myintvariable)

然后对于检索,考虑到为了避免错误,您应该尝试

os.environ.get('DEBUSSY', 'Not Set')

可能用'-1'替换“未设置”

所以,把这些放在一起

myintvariable = 1
os.environ['DEBUSSY'] = str(myintvariable)
strauss = int(os.environ.get('STRAUSS', '-1'))
# NB KeyError <=> strauss = os.environ['STRAUSS']
debussy = int(os.environ.get('DEBUSSY', '-1'))

print "%s %u, %s %u" % ('Strauss', strauss, 'Debussy', debussy)

os.environ的行为类似于python字典,因此可以执行所有常见的字典操作。除了其他答案中提到的getset操作之外,我们还可以简单地检查是否存在键

Python 3

对于python 3,字典使用中的关键字,而不是has\u键

>>> import os
>>> 'HOME' in os.environ  # Check an existing env. variable
True
...

Python 2

>>> import os
>>> os.environ.has_key('HOME')  # Check an existing env. variable
True
>>> os.environ.has_key('FOO')   # Check for a non existing variable
False
>>> os.environ['FOO'] = '1'     # Set a new env. variable (String value)
>>> os.environ.has_key('FOO')
True
>>> os.environ.get('FOO')       # Retrieve the value
'1'

使用os.environ有一件重要的事情要注意:

虽然子进程从父进程继承环境,但我最近遇到了一个问题并解决了这个问题,如果在运行python脚本时有其他脚本更新环境,再次调用os.environ将不会反映最新值。

摘自docs

This mapping is captured the first time the os module is imported, typically during Python startup as part of processing site.py. Changes to the environment made after this time are not reflected in os.environ, except for changes made by modifying os.environ directly.

存储所有环境变量的os.environ.data是一个dict对象,它包含所有环境值:

>>> type(os.environ.data)  # changed to _data since v3.2 (refer comment below)
<type 'dict'>

相关问题 更多 >

    热门问题