How does python load all values ​​in sys.path?

I'm a python novice, and in my early days I play with my python scripts and projects like django.

I use Ubuntu and I installed PYTHONPATH as

export PYTHONPATH=/usr/lib/python2.6:~/Projects/mypython 

When I run the python interpreter

 import sys print sys.path 

I see

['', '/ usr / bin', '/usr/local/lib/python2.6/dist-packages/ropemode-0.1_rc2-py2.6.egg', '/usr/local/lib/python2.6 /dist-packages/rope-0.9.3-py2.6.egg ',' / usr / local / lib / python2.6 / dist-packages / ropevim-0.3_rc-py2.6.egg ',' / usr / lib / python2.6 ',' / home / jaume / Projects / mypython ',' / usr / lib / python2.6 / plat-linux2 ',' / usr / lib / python2.6 / lib-tk ',' / usr / lib / python2.6 / lib-old ',' /usr/lib/python2.6/lib-dynload ',' /usr/local/lib/python2.6/dist-packages ',' / usr / lib /python2.6/dist-packages ',' / usr / lib / python2.6 / dist-packages / PIL ',' / usr / lib / python2.6 / dist-packages / gst-0.10 ',' / usr / lib / pymodules / python2.6 ',' / usr / lib / python2.6 / dist-packages / gtk-2.0 ',' / usr / lib / pymodules / python2.6 / gtk-2.0 ',' / usr / lib /python2.6/dist-packages/wx-2.8-gtk2-unicode ',' / usr / lib / pymodules / python2.6 / IPython / Extensions', u '/ home / jaume / .ipython']

How does python load all paths other than PYTHONPATH? Is there any index? In addition, I have django installed in / usr / lib / pymodules, and even it is not on the sys.path list, it starts.

Many thanks.

+7
python django
source share
2 answers

This is a list of each file that the Python interpreter interprets on my computer (which is configured similarly, but not the one you have) before it runs the code provided by me:

 $ strace -eopen python -c 1 2>&1 | grep -ve '-1 E' open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libpthread.so.0", O_RDONLY) = 3 open("/lib/libdl.so.2", O_RDONLY) = 3 open("/lib/libutil.so.1", O_RDONLY) = 3 open("/usr/lib/libssl.so.0.9.8", O_RDONLY) = 3 open("/usr/lib/libcrypto.so.0.9.8", O_RDONLY) = 3 open("/usr/lib/libz.so.1", O_RDONLY) = 3 open("/lib/libm.so.6", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 open("/proc/meminfo", O_RDONLY) = 3 open("/usr/lib/python2.6/site.py", O_RDONLY) = 3 open("/usr/lib/python2.6/site.pyc", O_RDONLY) = 4 open("/usr/lib/python2.6/os.py", O_RDONLY) = 4 open("/usr/lib/python2.6/os.pyc", O_RDONLY) = 5 open("/usr/lib/python2.6/posixpath.py", O_RDONLY) = 5 open("/usr/lib/python2.6/posixpath.pyc", O_RDONLY) = 6 open("/usr/lib/python2.6/stat.py", O_RDONLY) = 6 open("/usr/lib/python2.6/stat.pyc", O_RDONLY) = 7 open("/usr/lib/python2.6/genericpath.py", O_RDONLY) = 6 open("/usr/lib/python2.6/genericpath.pyc", O_RDONLY) = 7 open("/usr/lib/python2.6/warnings.py", O_RDONLY) = 6 open("/usr/lib/python2.6/warnings.pyc", O_RDONLY) = 7 open("/usr/lib/python2.6/linecache.py", O_RDONLY) = 7 open("/usr/lib/python2.6/linecache.pyc", O_RDONLY) = 8 open("/usr/lib/python2.6/types.py", O_RDONLY) = 7 open("/usr/lib/python2.6/types.pyc", O_RDONLY) = 8 open("/usr/lib/python2.6/UserDict.py", O_RDONLY) = 5 open("/usr/lib/python2.6/UserDict.pyc", O_RDONLY) = 6 open("/usr/lib/python2.6/_abcoll.py", O_RDONLY) = 6 open("/usr/lib/python2.6/_abcoll.pyc", O_RDONLY) = 7 open("/usr/lib/python2.6/abc.py", O_RDONLY) = 7 open("/usr/lib/python2.6/abc.pyc", O_RDONLY) = 8 open("/usr/lib/python2.6/copy_reg.py", O_RDONLY) = 5 open("/usr/lib/python2.6/copy_reg.pyc", O_RDONLY) = 6 open("/usr/local/lib/python2.6/dist-packages", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4 open("/usr/lib/python2.6/dist-packages", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 4 open("/usr/lib/python2.6/dist-packages/PIL.pth", O_RDONLY) = 4 open("/usr/lib/python2.6/dist-packages/pygst.pth", O_RDONLY) = 4 open("/usr/lib/python2.6/dist-packages/python-support.pth", O_RDONLY) = 4 open("/usr/lib/python2.6/dist-packages/wx.pth", O_RDONLY) = 4 open("/usr/lib/python2.6/dist-packages/zope.interface-3.5.3-nspkg.pth", O_RDONLY) = 4 open("/usr/lib/python2.6/sitecustomize.py", O_RDONLY) = 4 open("/usr/lib/python2.6/sitecustomize.pyc", O_RDONLY) = 5 open("/usr/lib/locale/locale-archive", O_RDONLY) = 3 open("/usr/lib/python2.6/encodings/__init__.py", O_RDONLY) = 3 open("/usr/lib/python2.6/encodings/__init__.pyc", O_RDONLY) = 4 open("/usr/lib/python2.6/codecs.py", O_RDONLY) = 4 open("/usr/lib/python2.6/codecs.pyc", O_RDONLY) = 5 open("/usr/lib/python2.6/encodings/aliases.py", O_RDONLY) = 4 open("/usr/lib/python2.6/encodings/aliases.pyc", O_RDONLY) = 5 open("/usr/lib/python2.6/encodings/utf_8.py", O_RDONLY) = 3 open("/usr/lib/python2.6/encodings/utf_8.pyc", O_RDONLY) = 4 

All of them can, at least potentially, affect sys.path. However, it is highly unlikely that the material that was before site.py would have been (all these are OS libraries and non-Python interfaces). I would advise you to carefully consider site.py , sitecustomize.py , and various .pth files (your list of .pth files will be different from mine, this is normal).

+3
source share
0
source share

All Articles