是否可以使用Python 3.5在Windows和Linux中创建和更新环境变量,以便它们得到持久保存?
目前我用这个:
import os
os.environ["MY_VARIABLE"] = "TRUE"
然而,似乎这不会持久地“存储”环境变量。
答案 0 :(得分:2)
我在这里为Linux发言,不确定Windows。
环境变量不会那样工作。它们是流程的一部分(通过更改os.environ来修改它),它们将传播到流程的子流程(显然是他们的孩子)。它们只在内存中,并且无法设置和保持"他们直接。
但是有几个配置文件允许您更精细地设置环境。它们由各种进程读取,可以是系统范围的,特定于用户,特定于shell,特定类型的进程等。
其中一些是:
大多数情况下,您只想为当前用户设置环境变量。如果您只关心shell,请以这种格式将它们附加到〜/ .profile:
NAME="VALUE"
答案 1 :(得分:2)
持久的标准方式'环境变量带有配置文件。编写应用程序以打开配置文件并设置它找到的每个NAME = VARIABLE对。可选地,此步骤可以在包装器启动脚本中完成。
如果你想保存'变量的状态,您需要打开配置文件并修改其内容。然后,当它再次读入时,您的应用程序将相应地设置环境。
您当然可以以其他方式存储配置。例如,在pickle / shelve的configuration_settings类中。然后在程序启动时读入pickle类并设置环境。需要了解的重要一点是,当流程退出其环境时未保存。环境从父进程继承,作为分叉的有意副产品。
配置文件可能如下所示:
NAME=VALUE
NAME2=VALUE2
...
或者您的配置类可能如下所示:
class Configuration():
env_vars = {}
import os
def set(name, val):
env_vars[name] = val
os.environ[name] = val
def unset(name):
del env_vars[name]
del os.environ[name]
def init():
for name in env_vars:
os.environ[name] = env_vars[name]
我们的应用程序中的其他地方
import shelve
filename = "config.db"
d = shelve.open(filename)
# get our configuration out of shelve
config = d['configuration']
# initialize environment
config.init()
# setting an environment variable
config.set("MY_VARIABLE", "TRUE")
#unsetting
config.unset("MY_VARIABLE")
# save our configuration
d['configuration'] = config
代码未经过测试,但我认为你得到了这个问题。