see - python-os.getenv y os.environ no ven las variables de entorno de mi shell bash
pythonpath environment variable (2)
Esas variables (parámetros en terminología bash) no son variables de entorno . Desea exportarlos al entorno, utilizando export
o declare -x
. Consulte la use .
Estoy en ubuntu 13.04, bash, python2.7.4
El intérprete no ve las variables que establezco.
Aquí hay un ejemplo:
$ echo $A
5
$ python -c ''import os; print os.getenv( "A" )''
None
$ python -c ''import os; print os.environ[ "A" ]''
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python2.7/UserDict.py", line 23, in __getitem__
raise KeyError(key)
KeyError: ''A''
Pero todo funciona bien con la variable PATH
:
$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ python -c ''import os; print os.getenv("PATH")''
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
Y se nota cambios en PATH
:
$ PATH="/home/alex/tests/:$PATH"
$ echo $PATH
/home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
$ python -c ''import os; print os.getenv("PATH")''
/home/alex/tests/:/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
¿Qué podría estar mal?
PS el problema viene al usar $PYTHONPATH
:
$ python -c ''import os; print os.getenv("PYTHONPATH")''
None
Jajaja ¡La solución es simple!
Estaba configurando variables con el comando simple $ A=5
; cuando usas $ export B="kkk"
todo está bien.
Eso es beca export
use hace que la variable esté disponible para los subprocesos:
- crea una variable en el shell
- Y lo exporta al
environment
de la concha. - El
environment
la lista se pasa a los subprocesos del shell.
Plain $ A="kkk"
simplemente crea variables en el shell y no hace nada con el environment
.
El intérprete al que se llama desde el shell obtiene su environment
del padre: el shell. Entonces realmente la variable debería ser exportada al environment
antes.