<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2657.73">
<TITLE>RE: [Python-au] Environment vars</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>Thats the difference between setting _system_ properties and setting _session_ properties. If it's a matter of persistent environment changes then the registry is useful from a configuration point of view.</FONT></P>

<P><FONT SIZE=2>-----Original Message-----</FONT>
<BR><FONT SIZE=2>From: Mark Hammond [<A HREF="mailto:mhammond@skippinet.com.au">mailto:mhammond@skippinet.com.au</A>]</FONT>
<BR><FONT SIZE=2>Sent: 18 August 2005 17:03</FONT>
<BR><FONT SIZE=2>To: Mike Dewhirst; Grant McDonald</FONT>
<BR><FONT SIZE=2>Cc: python-au@python.net</FONT>
<BR><FONT SIZE=2>Subject: RE: [Python-au] Environment vars</FONT>
</P>
<BR>

<P><FONT SIZE=2>&gt; Grant McDonald wrote:</FONT>
<BR><FONT SIZE=2>&gt; &gt; Not entirely sure,</FONT>
<BR><FONT SIZE=2>&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt; &gt; The docs say you should modify os.environ directly since it</FONT>
<BR><FONT SIZE=2>&gt; automatically</FONT>
<BR><FONT SIZE=2>&gt; &gt; calls putenv, but as you stated on WinXP and as you say it</FONT>
<BR><FONT SIZE=2>&gt; doesn't seem to</FONT>
<BR><FONT SIZE=2>&gt; &gt; work.&nbsp; I guess putenv may not be supported on WinXP.</FONT>
<BR><FONT SIZE=2>&gt; &gt;</FONT>
<BR><FONT SIZE=2>&gt; &gt; If you want a reliable way of modifying the environment on WinXP use the</FONT>
<BR><FONT SIZE=2>&gt; &gt; registry (unfortunately platform specific):</FONT>
<BR><FONT SIZE=2>&gt;</FONT>
<BR><FONT SIZE=2>&gt; I'd prefer to stay platform neutral. I think I'll detect os.name and</FONT>
<BR><FONT SIZE=2>&gt; scribble out a batch file to set a couple of vars if it is 'nt'.</FONT>
</P>

<P><FONT SIZE=2>This is how environment variables work on all platforms.&nbsp; Each process gets</FONT>
<BR><FONT SIZE=2>an environment, specified by its parent.&nbsp; os.putenv etc all set the</FONT>
<BR><FONT SIZE=2>*current* process' environment variable - you can not set environment</FONT>
<BR><FONT SIZE=2>variables in your parent process.</FONT>
</P>

<P><FONT SIZE=2>Thus, in a .bat file, cmd.exe is the parent of your python.exe.&nbsp; This</FONT>
<BR><FONT SIZE=2>python.exe can not change the cmd.exe environment.&nbsp; You will have to arrange</FONT>
<BR><FONT SIZE=2>some way of having the parent process read the env vars (such as writing a</FONT>
<BR><FONT SIZE=2>temp .bat file or shell script the parent then calls after your process is</FONT>
<BR><FONT SIZE=2>complete).&nbsp; I don't believe there is a platform neutral syntax you can use</FONT>
<BR><FONT SIZE=2>for this temp script though.</FONT>
</P>

<P><FONT SIZE=2>Even on Windows, hacking the registry will not have the affect you desire -</FONT>
<BR><FONT SIZE=2>as the parent process will already be running, changing the registry will</FONT>
<BR><FONT SIZE=2>not affect that process.</FONT>
</P>

<P><FONT SIZE=2>Mark</FONT>
</P>

</BODY>
<!--[object_id=#infocomp.com#]--><P><FONT face=Arial color=#808080 size=1>Important notice: This message is intended for the individual(s) and entity(s) addressed. The information contained in this transmission and any attached, may be confidential and may also be the subject of legal privilege, public interest immunity or legal professional privilege. Any review, retransmission, dissemination or other use of, taking of any action in reliance upon this information by person or entities other than the recipient is prohibited and requires authorization from the sender. If you are not the addressee indicated in this message (or responsible for delivery of the message to such person) you may not copy or deliver this message to anyone. In such cases you should destroy this message and kindly notify the sender by reply email. </FONT></P>
<P><FONT face=Arial color=#808080 size=1>WARNING: Although Infocomp has taken reasonable precautions so that no viruses&nbsp;are present in this e-mail, the company cannot accept responsibility for any loss or damage arising from the use of e-mail attachments.</FONT></P></HTML>