site.md
1> **Источник:** https://python-all.ru/3.1/library/site.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 27.12. `site` – Перехватчик конфигурации, специфичной для сайта89**Этот модуль автоматически импортируется во время инициализации.** Автоматический импорт можно отключить с помощью опции интерпретатора *-S*.1011Импорт этого модуля добавляет пути, специфичные для сайта, в путь поиска модулей.1213Начинается с построения до четырех каталогов из головной и хвостовой частей. Для головной части используются `sys.prefix` и `sys.exec_prefix`; пустые головные части пропускаются. Для хвостовой части используется пустая строка, а затем `lib/site-packages` (в Windows) или `lib/python|version|/site-packages`, а затем `lib/site-python` (в Unix и Macintosh). Для каждой из различных комбинаций головы и хвоста проверяется, указывает ли она на существующий каталог, и если да, то он добавляется в `sys.path`, а также проверяет новый добавленный путь на наличие файлов конфигурации.1415Файл конфигурации пути – это файл, имя которого имеет вид `package.pth` и находится в одном из четырех каталогов, упомянутых выше; его содержимое – дополнительные элементы (по одному на строку), добавляемые в `sys.path`. Несуществующие элементы никогда не добавляются в `sys.path`, но не проверяется, что элемент ссылается на каталог (а не на файл). Ни один элемент не добавляется в `sys.path` более одного раза. Пустые строки и строки, начинающиеся с `#`, пропускаются. Строки, начинающиеся с `import` (с последующим пробелом или табуляцией), выполняются.1617Например, предположим, `sys.prefix` и `sys.exec_prefix` установлены в `/usr/local`. Библиотека Python X.Y устанавливается в `/usr/local/lib/pythonX.Y` (где для формирования имени каталога установки используются только первые три символа `sys.version`). Предположим, он содержит подкаталог `/usr/local/lib/pythonX.Y/site-packages` с тремя подподкаталогами, `foo`, `bar` и `spam`, и два файла конфигурации пути, `foo.pth` и `bar.pth`. Предположим, `foo.pth` содержит следующее:1819```python20# конфигурация пакета foo2122foo23bar24bletch25```2627а `bar.pth` содержит:2829```python30# конфигурация пакета bar3132bar33```3435Тогда в `sys.path` добавляются следующие специфические для версии каталоги (в указанном порядке):3637```python38/usr/local/lib/pythonX.Y/site-packages/bar39/usr/local/lib/pythonX.Y/site-packages/foo40```4142Обратите внимание, что `bletch` пропущен, потому что не существует; каталог `bar` предшествует каталогу `foo`, так как `bar.pth` идёт раньше `foo.pth` в алфавитном порядке; а `spam` пропущен, потому что не упоминается ни в одном из файлов конфигурации пути.4344После этих манипуляций с путями предпринимается попытка импортировать модуль с именем `sitecustomize`, который может выполнять произвольные настройки сайта. Если этот импорт завершается ошибкой с исключением [`ImportError`](https://python-all.ru/3.1/library/exceptions.html#ImportError), она молча игнорируется.4546Обратите внимание, что для некоторых не-Unix систем `sys.prefix` и `sys.exec_prefix` пусты, и манипуляции с путями пропускаются; однако импорт `sitecustomize` всё же предпринимается.4748#### `site.PREFIXES`4950Список префиксов для каталогов пакетов сайта5152#### `site.ENABLE_USER_SITE`5354Флаг, показывающий статус пользовательского каталога сайта. Значение True означает, что пользовательский каталог сайта включен и добавлен в sys.path. Когда флаг равен None, пользовательский каталог сайта отключен по соображениям безопасности.5556#### `site.USER_SITE`5758Путь к пользовательскому каталогу сайта для текущей версии Python или None5960#### `site.USER_BASE`6162Путь к базовому каталогу для пользовательских каталогов сайта6364**`PYTHONNOUSERSITE`**6566**`PYTHONUSERBASE`**6768#### `site.addsitedir(sitedir, known_paths=None)`6970Добавляет каталог в sys.path и обрабатывает его pth-файлы.71