跳到内容

赋值给 os-environ (B003)

源自 flake8-bugbear linter。

作用

检查对 os.environ 的赋值。

为什么这不好?

在 Python 中,os.environ 是一个映射,代表当前进程的环境。

但是,重新赋值给 os.environ 不会清除环境。相反,它仅仅更新当前进程的 os.environ。这可能会导致意外的行为,尤其是在子进程中运行程序时。

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

示例

import os

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

建议改为

import os

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

参考