On Thu, 17 Jun 2010 03:25:03 am Alan Gauld wrote:
> "R. Alan Monroe" <amon...@columbus.rr.com> wrote
>
> >> directory, I suppose. Under windows, probably the registry.
> >> There's the _winreg and configparser modules.
> >
> > Consider using the %USERPROFILE% environment variable rather than
> > the
> > registry.
>
> How would that work? That is just a single variable that points
> to the users Settings folder. Effectively their home directory in
> unix terms, so you could store the config file there. But
> you couldn't store the kind of data you would store in the
> registry?
>
> I'm confused.

Environment variables are not permanent storage. They only exist in RAM 
unless you take steps to recreate them from permanent storage. Under 
Linux, for example, environment variables are recreated each time you 
log in after being read from a config file, such as .bashrc. My .bashrc 
includes:

export PYTHONPATH=/home/steve/python/
export PYTHONSTARTUP=/home/steve/python/startup.py

So even if you wrote the values you cared about to one or more 
environment variable, they would disappear as soon as the user logged 
out or rebooted.

It gets worse... Python includes the command os.putenv to set 
environment variables, but they are only set for subprocesses of the 
Python process that sets them. So for example, I can do this:

>>> os.putenv('myenvvar', 'value')
>>> os.system('echo $myenvvar')
value
0

but if I turn to another shell (not a subshell) it doesn't exist:

[st...@sylar ~]$ echo $myenvvar

[st...@sylar ~]$


See also this:
http://code.activestate.com/recipes/159462-how-to-set-environment-variables/


So unless I've missed something exceedingly subtle, writing to 
environment variables is not a solution to the problem of saving 
default values. It's not even part of a solution.



-- 
Steven D'Aprano
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to