sys.path() and PYTHONPATH issues
Posted
by
Justin
on Stack Overflow
See other posts from Stack Overflow
or by Justin
Published on 2012-07-28T01:33:17Z
Indexed on
2012/12/16
23:04 UTC
Read the original article
Hit count: 181
python-2.7
|environment-variables
I've been learning Python, I'm working in 2.7.3, and I'm trying to understand import
statements.
The documentation says that when you attempt to import a module, the interpreter will first search for one of the built-in modules.
What is meant by a built-in module?
Then, the documentation says that the interpreter searches in the directories listed by sys.path, and that sys.path is initialized from these sources:
- the directory containing the input script (or the current directory).
PYTHONPATH
(a list of directory names, with the same syntax as the shell variablePATH
).- the installation-dependent default.
Here is a sample output of a sys.path command from my computer using python in command-line mode: (I deleted a few so that it wouldn't be huge)
['', '/usr/lib/python2.7', '/usr/lib/python2.7/lib-old', '/usr/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages/PIL', '/usr/lib/python2.7/dist-packages/gst-0.10', '/usr/lib/python2.7/dist-packages/gtk-2.0', '/usr/lib/pymodules/python2.7', '/usr/lib/python2.7/dist-packages/ubuntuone-couch', '/usr/lib/python2.7/dist-packages/ubuntuone-storage-protocol']
Now, I'm assuming that the '' path refers to the directory containing the 'script', and so I figured the rest of them would be coming from my
PYTHONPATH
environmental variable. However, when I go to the terminal and typeenv
,PYTHONPATH
doesn't exist as an environmental variable. I also triedimport os
thenos.environ
, but I get the same output.Do I really not have a PYTHONPATH environmental variable? I don't believe I ever specifically defined a PYTHONPATH environmental variable, but I assumed that when I installed new packages they automatically altered that environment variable. If I don't have a PYTHONPATH, how is my sys.path getting populated? If I download new packages, how does Python know where to look for them if I don't have this PYTHONPATH variable?
How do environment variables work? From what I understand, environment variables are specific to the process for which they are set, however, if I open multiple terminal windows and run
env
, they all display a number of identical variables, for example,PATH
. I know there file locations for persistent environment variables, for example/etc/environment
, which contains myPATH
variable. Is it possible to tell where a persistent environment variable is stored? What is the recommended location for storing new persistent environment variables? How do environment variables actually work with say, the Python interpreter? The Python interpreter looks forPYTHONPATH
, but how does it work at the nitty-gritty level?
© Stack Overflow or respective owner