Re: Problemas con os.system y modificación de variables de entorno

Chema Cortes pych3m4 en gmail.com
Jue Dic 21 01:47:14 CET 2006


El 2006/12/21, Milton Galo Patricio <minoztro en gmail.com> escribió:

> necesito definir una variable de entorno, pero no lo puedo lograr,
> para hacer esto utilizo el modulo os, a continuación lo explico:
>
>
> minostro en guardian:~/Desktop$ export PGUSER=milton
> minostro en guardian:~/Desktop$ echo $PGUSER
> milton
>
> aca defino una variable de enterno cualquiera, entonces ahora la voy a
> modificar con el modulo os.system, de la siguiente manera:
>
> minostro en guardian:~/Desktop$ python
> Python 2.4.4c1 (#2, Oct 11 2006, 21:51:02)
> [GCC 4.1.2 20060928 (prerelease) (Ubuntu 4.1.1-13ubuntu5)] on linux2
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import os
> >>> os.system('export PGUSER=pia')
> 0
> >>> os.system('echo $PGUSER')
> milton
> 0
>
> y bueno ahi está :(, no me modifica la variable de entorno, de seguro
> que estoy haciendo algo mal, pero ahora escribiendo el mail se me
> ocurrio lo siguiente:
>
> >>> os.system('export PGUSER=pia; echo $PGUSER')
> pia
> 0
>
> ..y bueno ahí está, si lo hago en la misma linea todo funciona de
> maravillas, alguien me puede explicar por qué se comporta de esta
> forma??, gracias

Creo que no entiendes cómo funcionan los "entornos".  os.system() crea
un proceso hijo con su propio entorno "heradado" del proceso padre,
pero independiente de él. Este entorno se piede al finalizar el
proceso (cuando retornas del os.system()).

Si quieres alterar el proceso actual, donde se está ejecutando el
intérprete de python, accede al entorno a través del diccionario
os.environ




Más información sobre la lista de distribución Python-es