Estaba mirando a través de la fuente y noté que hace referencia a un environ variable en los métodos antes de que se defina:
def _createenviron(): if name == 'nt': # Where Env Var Names Must Be UPPERCASE def check_str(value): if not isinstance(value, str): raise TypeError("str expected, not %s" % type(value).__name__) return value encode = check_str decode = str def encodekey(key): return encode(key).upper() data = {} for key, value in environ.items(): data[encodekey(key)] = value else: # Where Env Var Names Can Be Mixed Case encoding = sys.getfilesystemencoding() def encode(value): if not isinstance(value, str): raise TypeError("str expected, not %s" % type(value).__name__) return value.encode(encoding, 'surrogateescape') def decode(value): return value.decode(encoding, 'surrogateescape') encodekey = encode data = environ return _Environ(data, encodekey, decode, encode, decode) # unicode environ environ = _createenviron() del _createenviron Entonces, ¿cómo se configura environ ? Parece que no puedo razonar sobre dónde se inicializó y declaró para que _createenviron pueda usarlo.
Búsqueda TLDR from posix import * en el contenido del módulo os .
El módulo os importa todos los símbolos públicos del módulo de bajo nivel posix (Unix) o nt (Windows) al comienzo de os.py
posix expone environ como un simple dict de Python. os lo envuelve con un objeto similar a _Environ dict que actualiza las variables de entorno en los cambios de elementos de _Environ .