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

Reply via email to