On 10/30/2014 10:40 PM, Artur Bercik wrote:

On Fri, Oct 31, 2014 at 11:30 AM, Zachary Ware <
zachary.ware+pyl...@gmail.com> wrote:

On Thursday, October 30, 2014, Artur Bercik <vbubbl...@gmail.com> wrote:

Dear Dave Angel

Thanks for your answer.

I am using Python 2.7

I want to set it permanently.
I have to set several variables so it would be easier if I could set them
from Python.


Depending on how "permanently" you mean, about your only solutions would
be "os.system('setx <...>')" or manually manipulating the registry with the
_winreg module.



> could you please elaborate 'setx <...>'?
>

SETX is a Windows utility. I don't run Windows, but I found a Win7 machine and played again. I used to be quite knowledgeable about Windows, but I could get parts of the following wrong.

To see what SETX does, type (at a cmd line):

SETX /?

Or google it. (I used duckduckgo, and here are the first two useful links: Obviously the second one is an official Microsoft page.

http://ss64.com/nt/setx.html
http://technet.microsoft.com/en-us/library/cc755104.aspx

There are several variants of "permanent" that are relevant here.

1) Nothing you change in one process will change another process that's already running. That includes any shells you might have already started, such as DOS boxes. (cmd windows) And the term shell here also includes any other already-running process that is going to launch another program. The shell controls its child's environment, and in general do not check the registry for changes you might have made.

2) SETX will affect new processes launched directly from Windows (eg. from Explorer), because it changes the registry itself.

3) SETX will affect *new* shells launched, and thus indirectly affect their children.

4) SETX effects will survive a reboot. So when you restart your system, you'll still see the new values. Incidentally, that's the first time when you'll be sure that all processes will see the new values.

5) SETX can be used on remote (networked) systems, and the rules are somewhat different there.

6) If you have (or ever will have) multiple users, you have to consider whether you want to affect the system environment variables or just one user. And if just one user, whether it's yourself or some other account, such as Administrator. Every time a process is launched by the system, it builds an environment from TWO sets of registry items. So if you want to affect all users, you need to change the system variables.


If you are just going to do this once, and you want to affect all the processes that ever run in the future, you'll be much safer using the control panel:

Control Panel | System | Advanced | Environment Variables




--
DaveA
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to