Чтобы дать более подробное объяснение, Python автоматически создаст свои пути поиска (как упоминалось выше и здесь ), используя скрипт site.py
(обычно расположенный в sys.prefix + lib/python<version>/site-packages
, а также lib/site-python
). Можно получить значение sys.prefix:
python -c 'import sys; print(sys.prefix)'
Затем сценарий site.py добавляет ряд каталогов, зависящих от платформы, таких как /usr/{lib,share}/python<version>/dist-packages
, /usr/local/lib/python<version>/dist-packages
, к пути поиска , а также ищет эти пути для <package>.pth
файлов конфигурации которые содержат конкретные дополнительные пути поиска. Например, easy-install поддерживает свою коллекцию установленных пакетов, которые добавляются в системный файл, например, в Ubuntu это /usr/local/lib/python2.7/dist-packages/easy-install.pth
. В типичной системе есть куча этих файлов .pth, которые могут объяснить некоторые неожиданные пути в sys.path:
python -c 'import sys; print(sys.path)'
Таким образом, можно создать файл .pth и поместить его в любой из этих каталогов (включая sitedir, как упомянуто выше ). Похоже, именно так большинство пакетов добавляются в sys.path, а не в PYTHONPATH.
Примечание: В OSX есть специальный дополнительный путь поиска, добавленный site.py для «сборок фреймворка» (но, похоже, работает для обычного использования Python в командной строке): /Library/Python/<version>/site-packages
(например, для Python2.7: /Library/Python/2.7/site-packages/
) где должны быть установлены сторонние пакеты (см. README в этом каталоге). Таким образом, можно добавить туда файл конфигурации пути, содержащий дополнительные пути поиска, например, создайте файл с именем /Library/Python/2.7/site-packages/pip-usr-local.pth
, который содержит /usr/local/lib/python2.7/site-packages/
, а затем системный питон добавит этот путь поиска.