[issue35862] Change the environment for a new process
Eryk Sun
report at bugs.python.org
Fri Feb 1 03:42:44 EST 2019
Eryk Sun <eryksun at gmail.com> added the comment:
> Because sometimes when a process is implicitly started by some 3rd
> party library (i.e. COM via pythonwin here) the "old", unchanged
> environment is retained as the process itself doesn't care if
> os.environ was changed or not, the original environment cannot
> be modified.
What "old" environment are we talking about? The os.environ mapping is implemented to immediately modify the process environment block. For example:
Python:
>>> os.environ['SPAM'] = 'EGGS'
Debugger:
Breakpoint 0 hit
KERNELBASE!SetEnvironmentVariableW:
00007fff`8ae3ee30 4053 push rbx
0:000> kc 6
Call Site
KERNELBASE!SetEnvironmentVariableW
ucrtbase!common_set_variable_in_environment_nolock<wchar_t>
ucrtbase!common_putenv_nolock<wchar_t>
ucrtbase!common_putenv<wchar_t>
python37!os_putenv_impl
python37!os_putenv
0:000> du @rcx
00000215`70dd57c0 "SPAM"
0:000> du @rdx
00000215`70dd57ca "EGGS"
----------
nosy: +eryksun
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue35862>
_______________________________________
More information about the Python-bugs-list
mailing list