> **Источник:** https://python-all.ru/3.1/library/site.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# 27.12. `site` – Перехватчик конфигурации, специфичной для сайта

**Этот модуль автоматически импортируется во время инициализации.** Автоматический импорт можно отключить с помощью опции интерпретатора *-S*.

Импорт этого модуля добавляет пути, специфичные для сайта, в путь поиска модулей.

Начинается с построения до четырех каталогов из головной и хвостовой частей. Для головной части используются `sys.prefix` и `sys.exec_prefix`; пустые головные части пропускаются. Для хвостовой части используется пустая строка, а затем `lib/site-packages` (в Windows) или `lib/python|version|/site-packages`, а затем `lib/site-python` (в Unix и Macintosh). Для каждой из различных комбинаций головы и хвоста проверяется, указывает ли она на существующий каталог, и если да, то он добавляется в `sys.path`, а также проверяет новый добавленный путь на наличие файлов конфигурации.

Файл конфигурации пути – это файл, имя которого имеет вид `package.pth` и находится в одном из четырех каталогов, упомянутых выше; его содержимое – дополнительные элементы (по одному на строку), добавляемые в `sys.path`. Несуществующие элементы никогда не добавляются в `sys.path`, но не проверяется, что элемент ссылается на каталог (а не на файл). Ни один элемент не добавляется в `sys.path` более одного раза. Пустые строки и строки, начинающиеся с `#`, пропускаются. Строки, начинающиеся с `import` (с последующим пробелом или табуляцией), выполняются.

Например, предположим, `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` содержит следующее:

```python
# конфигурация пакета foo

foo
bar
bletch
```

а `bar.pth` содержит:

```python
# конфигурация пакета bar

bar
```

Тогда в `sys.path` добавляются следующие специфические для версии каталоги (в указанном порядке):

```python
/usr/local/lib/pythonX.Y/site-packages/bar
/usr/local/lib/pythonX.Y/site-packages/foo
```

Обратите внимание, что `bletch` пропущен, потому что не существует; каталог `bar` предшествует каталогу `foo`, так как `bar.pth` идёт раньше `foo.pth` в алфавитном порядке; а `spam` пропущен, потому что не упоминается ни в одном из файлов конфигурации пути.

После этих манипуляций с путями предпринимается попытка импортировать модуль с именем `sitecustomize`, который может выполнять произвольные настройки сайта. Если этот импорт завершается ошибкой с исключением [`ImportError`](https://python-all.ru/3.1/library/exceptions.html#ImportError), она молча игнорируется.

Обратите внимание, что для некоторых не-Unix систем `sys.prefix` и `sys.exec_prefix` пусты, и манипуляции с путями пропускаются; однако импорт `sitecustomize` всё же предпринимается.

#### `site.PREFIXES`

Список префиксов для каталогов пакетов сайта

#### `site.ENABLE_USER_SITE`

Флаг, показывающий статус пользовательского каталога сайта. Значение True означает, что пользовательский каталог сайта включен и добавлен в sys.path. Когда флаг равен None, пользовательский каталог сайта отключен по соображениям безопасности.

#### `site.USER_SITE`

Путь к пользовательскому каталогу сайта для текущей версии Python или None

#### `site.USER_BASE`

Путь к базовому каталогу для пользовательских каталогов сайта

**`PYTHONNOUSERSITE`**

**`PYTHONUSERBASE`**

#### `site.addsitedir(sitedir, known_paths=None)`

Добавляет каталог в sys.path и обрабатывает его pth-файлы.
