Am 22.09.2011 08:12 schrieb Steven D'Aprano:
I don't understand why some environment variables are not visible from
Python.
[steve@wow-wow ~]$ echo $LINES $COLUMNS $TERM
30 140 xterm
[steve@wow-wow ~]$ python2.6
Python 2.6.6 (r266:84292, Dec 21 2010, 18:12:50)
[GCC 4.1.2 20070925 (Red Hat 4.1.2-27)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import os
(os.getenv('LINES'), os.getenv('COLUMNS'), os.getenv('TERM'))
(None, None, 'xterm')
They are no environment variables, but merely shell variables.
You can turn them into environment variables with the shell command
"export". After exporting them, they are visible by Python.
The environment can be obtained with env.
So try:
$ python -c 'import os; print "\n".join(sorted("%s=%s" % (k,v) for k,v
in os.environ.iteritems()))' | diff -u - <(env|LANG=C sort)
@@ -61,4 +61,4 @@
XDG_DATA_DIRS=/usr/share
XKEYSYMDB=/usr/share/X11/XKeysymDB
XNLSPATH=/usr/share/X11/nls
-_=/usr/bin/python
+_=/usr/bin/env
and you see that they (nearly) match.
Try as well
$ python -c 'import os; print "\n".join(os.getenv(k) or "" for k in
("LINES","COLUMNS","TERM"))'
linux
$ export LINES
$ python -c 'import os; print "\n".join(os.getenv(k) or "" for k in
("LINES","COLUMNS","TERM"))'
24
linux
$ export COLUMNS
$ python -c 'import os; print "\n".join(os.getenv(k) or "" for k in
("LINES","COLUMNS","TERM"))'
24
80
linux
$
HTH,
Thomas
--
http://mail.python.org/mailman/listinfo/python-list