相关疑难解决方法(0)

Python - 暂时修改当前进程的环境

我使用以下代码临时修改环境变量.

@contextmanager
def _setenv(**mapping):
    """``with`` context to temporarily modify the environment variables"""
    backup_values = {}
    backup_remove = set()
    for key, value in mapping.items():
        if key in os.environ:
            backup_values[key] = os.environ[key]
        else:
            backup_remove.add(key)
        os.environ[key] = value

    try:
        yield
    finally:
        # restore old environment
        for k, v in backup_values.items():
            os.environ[k] = v
        for k in backup_remove:
            del os.environ[k]
Run Code Online (Sandbox Code Playgroud)

with上下文主要用于测试用例.例如,

def test_myapp_respects_this_envvar():
    with _setenv(MYAPP_PLUGINS_DIR='testsandbox/plugins'):
        myapp.plugins.register()
        [...]
Run Code Online (Sandbox Code Playgroud)

我的问题:是否有简单/优雅的写作方式_setenv?我想过实际上做backup = os.environ.copy(),然后os.environ = backup..但我不知道是否会影响程序行为(例如:如果os.environ引用在Python解释器在其他地方).

python environment-variables

25
推荐指数
4
解决办法
2万
查看次数

标签 统计

environment-variables ×1

python ×1