On Thu, 17 Jun 2010 03:25:03 am Alan Gauld wrote:
> "R. Alan Monroe" <[email protected]> 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 - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor