我需要在Python脚本中设置一些环境变量,我希望从Python调用的所有其他脚本都能看到环境变量的设置。
如果我这样做了,
os.environ["DEBUSSY"] = 1
它抱怨说1必须是一个字符串。
我还想知道如何读取Python中的环境变量(在脚本的后一部分),一旦我设置它。
我需要在Python脚本中设置一些环境变量,我希望从Python调用的所有其他脚本都能看到环境变量的设置。
如果我这样做了,
os.environ["DEBUSSY"] = 1
它抱怨说1必须是一个字符串。
我还想知道如何读取Python中的环境变量(在脚本的后一部分),一旦我设置它。
当前回答
有一个很好的开箱即用的Python解决方案叫做pycrosskit。 它将为Linux和Windows创建持久的环境变量。
用法:
# Will Set Persistent Value for Variable in System
# * subkey works only for windows like file in folder
# * reg_path works only for windows as register path
SysEnv.set_var(name, value, subkey, reg_path=default_reg_path)
# Will Get Persistent Value for Variable in System
# * reg_path works only for windows as register path
# * delete, deletes key from environment and its subkeys after read
SysEnv.get_var(name, reg_path=default_reg_path, delete=False)
其他回答
在使用此方法之前,请浏览评论部分
我一直在尝试添加环境变量。我的目标是将一些用户信息存储到系统变量中,这样我就可以在未来的解决方案中使用这些变量,作为配置文件的替代品。 然而,下面代码中描述的方法对我没有任何帮助。
import os
os.environ["variable_1"] = "value_1"
os.environ["variable_2"] = "value_2"
# To Verify above code
os.environ.get("variable_1")
os.environ.get("variable_2")
这个简单的代码块工作得很好,但是,这些变量存在于各自的进程中,这样你就不会在windows系统设置的环境变量选项卡中找到它们。以上大部分代码都没有达到我的目的。这里讨论的问题是:变量保存问题
os.environ.putenv(key, value)
又一次失败的尝试。因此,最后,我通过模仿包装在os包的系统类中的windows shell命令,成功地在窗口环境寄存器中保存变量。下面的代码描述了这个成功的尝试。
os.system("SETX {0} {1} /M".format(key, value))
我希望这对你们中的一些人有所帮助。
如果环境中不存在该变量,则使用setdefault函数设置新变量。
确保将环境变量设置为字符串,而不是int。否则将抛出TypeError。
import os
if not os.environ.get("DEBUSSY"):
os.environ.setdefault("DEBUSSY","1")
else:
os.environ["DEBUSSY"] = "1"
print(os.environ["DEBUSSY"])
有一个很好的开箱即用的Python解决方案叫做pycrosskit。 它将为Linux和Windows创建持久的环境变量。
用法:
# Will Set Persistent Value for Variable in System
# * subkey works only for windows like file in folder
# * reg_path works only for windows as register path
SysEnv.set_var(name, value, subkey, reg_path=default_reg_path)
# Will Get Persistent Value for Variable in System
# * reg_path works only for windows as register path
# * delete, deletes key from environment and its subkeys after read
SysEnv.get_var(name, reg_path=default_reg_path, delete=False)
环境是为代码本身(而不是子进程)冻结的,不能通过编程方式完成。
一个好的解决方案,不管是什么平台,都是将对python的调用包装在一个批处理文件中。例如:如果我在linux上,批处理文件可能看起来像这样
export "DEBUSSY"="1"
python mycode.py
设置变量:
使用键的赋值方法:
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