On 6/18/2013 12:49 PM, Johannes Bauer wrote:
Hi group,
I've tracked down a bug in my application to a rather strange
phaenomenon: os.putenv() doesn't seem to have any effect on my platform
(x86-64 Gentoo Linux, Python 3.2.3):
os.getenv("PATH")
'/usr/joebin:/usr/local/bin:/usr/bin:/bin:/usr/games/bin:/usr/sbin:/sbin:~/bin'
os.putenv("PATH", "/")
os.getenv("PATH")
'/usr/joebin:/usr/local/bin:/usr/bin:/bin:/usr/games/bin:/usr/sbin:/sbin:~/bin'
os.getenv("FOO")
os.putenv("FOO", "BAR")
os.getenv("FOO")
Does anybody know why this would happen
From the doc: "When putenv() is supported, assignments to items in
os.environ are automatically translated into corresponding calls to
putenv(); however, calls to putenv() don’t update os.environ, so it is
actually preferable to assign to items of os.environ."
Also " Such changes to the environment affect subprocesses started with
os.system(), popen() or fork() and execv()"
Not obvious fact: getenv gets values from the os.environ copy of the
environment, which is not affected by putenv. See
http://bugs.python.org/issue1159
> or what I could be doing wrong?
Using putenv(key, value) instead of os.environ[key] = value, which
suggests that you did not read the full doc entry, which says to use the
latter ;-).
--
Terry Jan Reedy
--
http://mail.python.org/mailman/listinfo/python-list