Как python загружает все значения в sys.path? - PullRequest
7 голосов
/ 09 декабря 2010

Я новичок в Python и с первых дней играю со своими собственными скриптами и проектами на Python, такими как django.

Я использую Ubuntu, и я установил PYTHONPATH как

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

Когда я сталкиваюсь с интерпретатором Python

import sys
print sys.path

Я вижу

['', '/ 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 ']

Как python загружает все пути не PYTHONPATH? Есть ли индекс? Более того, мой django установлен в / usr / lib / pymodules и, даже если его нет в списке sys.path, он запускается.

Большое спасибо.

Ответы [ 2 ]

3 голосов
/ 09 декабря 2010

Это список всех файлов, которые интерпретатор Python на моем компьютере (который настроен аналогично вашему, но не совпадает с ним), открывается перед запуском предоставленного мной кода:

$ 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

Все это может, по крайней мере, потенциально, повлиять на sys.path.Однако крайне маловероятно, что это произойдет до site.py (это все библиотеки ОС и интерфейсы, не относящиеся к Python).Я бы посоветовал вам внимательно взглянуть на site.py, sitecustomize.py и различные файлы .pth (ваш список файлов .pth будет отличаться от моего; это нормально).

0 голосов
/ 09 декабря 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...