Недавно у меня были некоторые проблемы с sys.path
, и вот как я пытался выяснить, откуда поступают записи. Я был в состоянии отследить все записи и откуда они пришли. Надеюсь, это вам тоже поможет.
Первое, что добавляется C:\WINNT\system32\python27.zip
(подробнее в PEP273).
Следующие, которые добавляются из записей в реестре Windows. Записи C:\Python27\DLLs;C:\Python27\lib; C:\Python27\lib\plat-win; C:\Python27\lib\lib-tk
взяты из HOT_KEY_LOCAL_USER/Python/PythonCore/2.7/PythonPath
в реестре. Больше подробностей в комментариях к исходному коду Python здесь http://svn.python.org/projects/python/trunk/PC/getpathp.c (Эти записи мне было непросто понять, пока я не нашел ссылку выше).
Далее, как объяснено в документации к пакету site
( ссылка ), sys.path
строится из sys.prefix
и sys.exec_prefix
. На моем компьютере они оба указывают на C:\Python27
. И по умолчанию он ищет lib/site-packages
в любом случае. Итак, теперь записи C:\Python27; C:\Python27\lib\site-packages
добавлены в список выше.
Затем выполняется поиск каждого из файлов .pth
в алфавитном порядке. У меня есть easy_install.pth
, pywin32.pth
и setuptools.pth
в моих пакетах сайта. Здесь вещи начинают становиться странными. Было бы просто, если бы записи в .pth
файлах были просто каталогами. Они просто добавляются к sys.path
построчно. Однако easy_install.pth
имеет некоторый код Python, который заставляет записи, перечисленные в easy_install.pth
, добавлять список пакетов в начало списка sys.path
.
После этого записи каталога в pywin32.pth
, setuptools.pth
добавляются в конец списка sys.path
, как и ожидалось.
Примечание. Хотя приведенное выше обсуждение относится к Windows, оно аналогично даже для Mac и т. Д. На Mac он просто добавляет различные значения по умолчанию для ОС, такие как darwin
и т. Д., Прежде чем начинает искать каталог site-packages
для файлов .pth
.
В вашем случае вы можете начать с запуска оболочки Python и проверить, куда sys.prefix
и sys.exec_prefix
указывают, а затем развернуть оттуда.
Примечание 2. Если вы используете IDE, такую как Aptana / PyDev, он добавит больше своих собственных конфигураций. Таким образом, вы должны быть осторожны с этим.