跳到内容

assignment-to-os-environ (B003)

添加于 v0.0.102 · 相关议题 · 查看源码

源自 flake8-bugbear linter。

作用

检查对 os.environ 的赋值操作。

为什么这不好?

在 Python 中,os.environ 是一个表示当前进程环境变量的映射(mapping)。

然而,对 os.environ 进行重新赋值并不会清除环境变量,它只会更新当前进程的 os.environ。这可能会导致意想不到的行为,尤其是在子进程中运行程序时。

应使用 os.environ.clear() 来清除环境变量,或者使用 subprocess.Popenenv 参数将自定义环境传递给子进程。

示例

import os

os.environ = {"foo": "bar"}

建议改为

import os

os.environ.clear()
os.environ["foo"] = "bar"

参考