我需要在Python脚本中设置一些环境变量,我希望从Python调用的所有其他脚本都能看到环境变量的设置。

如果我这样做了,

os.environ["DEBUSSY"] = 1

它抱怨说1必须是一个字符串。

我还想知道如何读取Python中的环境变量(在脚本的后一部分),一旦我设置它。


当前回答

设置变量:

使用键的赋值方法:

import os    
os.environ['DEBUSSY'] = '1'  #Environ Variable must be string not Int

为了得到或检查它是否存在,

因为操作系统。Environ是一个实例,您可以尝试对象方式。

方法1:

os.environ.get('DEBUSSY') # this is error free method if not will return None by default

将得到'1'作为返回值

方法2:

os.environ['DEBUSSY'] # will throw an key error if not found!

方法3:

'DEBUSSY' in os.environ  # will return Boolean True/False

方法4:

os.environ.has_key('DEBUSSY') #last 2 methods are Boolean Return so can use for conditional statements

其他回答

那么os呢?environ["DEBUSSY"] = '1'?环境变量总是字符串。

当您使用环境变量(添加/修改/删除变量)时,一个好的实践是在函数完成时恢复以前的状态。

您可能需要类似于这个问题中描述的modified_environ上下文管理器之类的东西来恢复环境变量。

经典的用法:

with modified_environ(DEBUSSY="1"):
    call_my_function()

如果你纠结于Flask和unittest,请记住,如果你在任何方法之外设置了一个变量,当你导入应用程序时,这个变量会被读取。可能看起来微不足道,但可以省去一些麻烦。

例如,如果进入你的Flask单元测试你:

导入应用 在setUp方法中设置环境变量。 使用app.test_client()来测试应用程序

进入第二步的变量到第三步时将不会看到,因为在执行第一步时已经读取了该变量。

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

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

将变量DEBUSSY设置为字符串1。

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

print(os.environ["DEBUSSY"])

子进程自动继承父进程的环境——您不需要做任何特殊的操作。

下面这些呢?

os.environ["DEBUSSY"] = '1'
debussy = int(os.environ.get('DEBUSSY'))
print(type(debussy))

<类“int”>