[New-bugs-announce] [issue46861] os.environ forces variable names to upper case on Windows
report at bugs.python.org
Fri Feb 25 22:44:08 EST 2022
New submission from benrg <benrudiak at gmail.com>:
The Windows functions that deal with environment variables are case-insensitive and case-preserving, like most Windows file systems. Many environment variables are conventionally written in all caps, but others aren't, such as `ProgramData`, `PSModulePath`, and `windows_tracing_logfile`.
os.environ forces all environment variable names to upper case when it's constructed. One consequence is that if you pass a modified environment to subprocess.Popen, you end up with variables named `PROGRAMDATA`, etc., even if you didn't modify their values.
While this is unlikely to break things since other software normally ignores the case, it's nonstandard behavior, and disconcerting when the affected variable names are shown to human beings.
Here's an example of someone being confused by this: https://stackoverflow.com/questions/19023238/why-python-uppercases-all-environment-variables-in-windows
components: Library (Lib), Windows
nosy: benrg, paul.moore, steve.dower, tim.golden, zach.ware
title: os.environ forces variable names to upper case on Windows
versions: Python 3.10, Python 3.11, Python 3.7, Python 3.8, Python 3.9
Python tracker <report at bugs.python.org>
More information about the New-bugs-announce