site.md
1> **Источник:** https://python-all.ru/3.16/library/site.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `site` – перехватчик конфигурации для конкретного сайта89**Исходный код:** [Lib/site.py](https://python-all.ru/src/main/Lib/site.py)1011---1213**Этот модуль автоматически импортируется при инициализации.** Автоматический импорт можно отключить с помощью опции интерпретатора [`-S`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-S).1415Импорт этого модуля обычно добавляет пути, специфические для сайта, в путь поиска модулей и добавляет [вызываемые объекты](https://python-all.ru/3.16/library/constants.html#site-consts), включая [`help()`](https://python-all.ru/3.16/library/functions.html#help), в пространство имён встроенных функций. Однако опция запуска Python [`-S`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-S) блокирует это, и этот модуль можно безопасно импортировать без автоматических изменений пути поиска модулей или добавлений во встроенные функции. Чтобы явно запустить обычные дополнения, специфические для сайта, вызовите функцию [`main()`](https://python-all.ru/3.16/library/site.html#site.main).1617Изменено в версии 3.3: Раньше импорт модуля запускал изменение путей даже при использовании [`-S`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-S).1819Он начинается с построения до четырёх каталогов из начальной и конечной части. Для начальной части используются `sys.prefix` и `sys.exec_prefix`; пустые начальные части пропускаются. Для конечной части используется пустая строка, а затем `lib/site-packages` (в Windows) или `lib/pythonX.Y[t]/site-packages` (в Unix и macOS). (Необязательный суффикс «t» обозначает [сборку со свободной потоковой поддержкой](https://python-all.ru/3.16/glossary.html#term-free-threaded-build) и добавляется, если `"t"` присутствует в константе [`sys.abiflags`](https://python-all.ru/3.16/library/sys.html#sys.abiflags).) Для каждой из различных комбинаций начальной и конечной частей проверяется, существует ли соответствующий каталог; если да, он добавляется в `sys.path`, и вновь добавленный путь также проверяется на наличие файлов конфигурации.2021Изменено в версии 3.5: Поддержка каталога «site-python» удалена.2223Изменено в версии 3.13: В Unix установки Python с [свободной многопоточностью](https://python-all.ru/3.16/glossary.html#term-free-threading) идентифицируются суффиксом «t» в имени каталога, зависящего от версии, например `lib/python3.13t/`.2425Изменено в версии 3.14: `site` больше не отвечает за обновление [`sys.prefix`](https://python-all.ru/3.16/library/sys.html#sys.prefix) и [`sys.exec_prefix`](https://python-all.ru/3.16/library/sys.html#sys.exec_prefix) в [виртуальных окружениях](https://python-all.ru/3.16/library/sys_path_init.html#sys-path-init-virtual-environments). Теперь это делается во время [инициализации путей](https://python-all.ru/3.16/library/sys_path_init.html#sys-path-init). В результате в [виртуальных окружениях](https://python-all.ru/3.16/library/sys_path_init.html#sys-path-init-virtual-environments) `sys.prefix` и `sys.exec_prefix` больше не зависят от инициализации `site` и, следовательно, не подвержены влиянию [`-S`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-S).2627При работе в [виртуальном окружении](https://python-all.ru/3.16/library/sys_path_init.html#sys-path-init-virtual-environments) файл `pyvenv.cfg` в [`sys.prefix`](https://python-all.ru/3.16/library/sys.html#sys.prefix) проверяется на наличие специфических для сайта конфигураций. Если ключ `include-system-site-packages` существует и установлен в `true` (без учёта регистра), системные префиксы будут проверяться на наличие site-packages, иначе нет. Если системные префиксы не проверяются, то префиксы пользовательского сайта также неявно не проверяются на site-packages.2829Модуль `site` распознаёт два конфигурационных файла запуска: `name.pth` для конфигурации путей и `name.start` для выполнения кода до первой строки. Оба файла могут находиться в одной из четырёх упомянутых выше директорий. В каждой директории эти файлы сортируются по имени в алфавитном порядке, а затем обрабатываются в отсортированном порядке.3031## Расширения путей (файлы `.pth`)3233`name.pth` содержит дополнительные элементы (по одному на строку), которые добавляются к `sys.path`. Элементы, указывающие на несуществующие каталоги, никогда не добавляются в `sys.path`, и не проверяется, что элемент ссылается на каталог, а не на файл. Ни один элемент не добавляется в `sys.path` более одного раза. Пустые строки и строки, начинающиеся с `#`, пропускаются.3435Для обратной совместимости строки, начинающиеся с `import` (с последующим пробелом или табуляцией), выполняются с помощью [`exec()`](https://python-all.ru/3.16/library/functions.html#exec).3637Изменено в версии 3.13: Файлы `.pth` теперь сначала декодируются в UTF-8, а затем, в случае неудачи, в [кодировке локали](https://python-all.ru/3.16/glossary.html#term-locale-encoding).3839Изменено в версии 3.15: Строки файла `.pth`, начинающиеся с `import`, устарели. В период устаревания такие строки продолжают выполняться (за исключением случая ниже), но диагностическое сообщение выводится только при указании флага [`-v`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-v).4041Строки `import` в `name.pth` молча игнорируются, когда существует [соответствующий](https://python-all.ru/3.16/library/site.html#site-start-files) файл `name.start`.4243Ошибки в отдельных строках больше не прерывают обработку остального файла. Каждая ошибка сообщается, а оставшиеся строки продолжают обрабатываться.4445Устарело с версии 3.15, будет удалено в версии 3.20: Декодирование файлов `name.pth` в кодировке, отличной от `utf-8-sig`, устарело в Python 3.15, а поддержка декодирования из кодировки локали будет удалена в Python 3.20.4647Строки `import` в файлах `name.pth` устарели и будут молча игнорироваться в Python 3.18 и 3.19. В Python 3.20 будет выдаваться предупреждение для строк `import` в файлах `name.pth`.4849## Точки входа при запуске (файлы `.start`)5051Добавлено в версии 3.15.5253Файл точки входа при запуске – это файл, имя которого имеет форму `name.start` и который находится в одном из каталогов site-packages, описанных выше. Каждый файл задаёт точки входа, которые вызываются при запуске интерпретатора, используя синтаксис `pkg.mod:callable`, понимаемый [`pkgutil.resolve_name()`](https://python-all.ru/3.16/library/pkgutil.html#pkgutil.resolve_name).5455Каждая непустая строка, не начинающаяся с `#`, должна содержать ссылку на точку входа в форме `pkg.mod:callable`. Двоеточие и часть с вызываемым объектом обязательны. Каждый вызываемый объект вызывается без аргументов, и любое возвращаемое значение отбрасывается.5657Файлы `.start` обрабатываются после того, как все расширения путей `.pth` были применены к [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path), что гарантирует доступность путей до выполнения любого кода запуска.5859В отличие от расширений [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) из файлов `.pth`, дубликаты точек входа **не** дедуплицируются – если точка входа встречается несколько раз, она будет вызвана несколько раз.6061Если во время разрешения или вызова точки входа возникает исключение, трассировка выводится в [`sys.stderr`](https://python-all.ru/3.16/library/sys.html#sys.stderr), и обработка продолжается с оставшимися точками входа.6263Файлы `.start` должны быть закодированы в UTF-8.6465[**PEP 829**](https://python-all.ru/3.16/library/site.html) определил оригинальную спецификацию для этих возможностей.6667> **Примечание**68>69> Если файл `name.start` существует рядом с файлом `name.pth` с тем же базовым именем, любые строки `import` в файле `.pth` игнорируются в пользу точек входа в файле `.start`.7071> **Примечание**72>73> Исполняемые строки (строки `import` в файлах `name.pth` и точки входа файлов `name.start`) всегда выполняются при запуске Python (если только не указан [`-S`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-S) для полного отключения модуля `site.py`), независимо от того, будет ли фактически использоваться конкретный модуль.7475> **Примечание**76>77> Файлы `name.start` вызывают [`pkgutil.resolve_name()`](https://python-all.ru/3.16/library/pkgutil.html#pkgutil.resolve_name) с `strict=True`, что требует полной формы `pkg.mod:callable`.7879## Примеры файлов запуска8081Например, предположим, что `sys.prefix` и `sys.exec_prefix` установлены в `/usr/local`. Тогда библиотека Python X.Y устанавливается в `/usr/local/lib/pythonX.Y`. Предположим, что в ней есть подкаталог `/usr/local/lib/pythonX.Y/site-packages` с тремя под-подкаталогами: `foo`, `bar` и `spam`, и два конфигурационных файла путей: `foo.pth` и `bar.pth`. Допустим, `foo.pth` содержит следующее:8283```text84# foo package configuration8586foo87bar88bletch89```9091а `bar.pth` содержит:9293```text94# bar package configuration9596bar97```9899Затем следующие каталоги, зависящие от версии, добавляются в `sys.path` в следующем порядке:100101```text102/usr/local/lib/pythonX.Y/site-packages/bar103/usr/local/lib/pythonX.Y/site-packages/foo104```105106Обратите внимание, что `bletch` пропущен, потому что не существует; каталог `bar` предшествует каталогу `foo`, поскольку `bar.pth` находится по алфавиту перед `foo.pth`; а `spam` пропущен, так как не упоминается ни в одном файле конфигурации путей.107108Допустим, также есть файл `foo.start`, содержащий следующее:109110```text111# foo package startup code112113foo.submod:initialize114```115116Теперь, после того как `sys.path` был расширен, как указано выше, и до того, как Python передаст управление пользовательскому коду, импортируется модуль `foo.submod` и вызывается функция `initialize()` из этого модуля.117118## Миграция со строк `import` в файлах `.pth` на файлы `.start`119120Если ваш пакет в настоящее время поставляет файл `name.pth`, вы можете оставить все строки расширения `sys.path` без изменений. Мигрировать нужно только строки `import`.121122Для миграции создайте вызываемый объект (принимающий ноль аргументов) внутри импортируемого модуля вашего пакета. Укажите его как точку входа `pkg.mod:callable` в соответствующем файле `name.start`. Перенесите всё, что находится в вашей строке `import` после первой точки с запятой, в функцию `callable()`.123124Если ваш пакет должен поддерживать как старые версии Python, не поддерживающие [**PEP 829**](https://python-all.ru/3.16/library/site.html), так и новые, которые его поддерживают, измените строки `import` в вашем файле `name.pth`, чтобы они использовали следующую форму:125126```python127import pkg.mod; pkg.mod.callable()128```129130Старые версии Python будут выполнять эти строки `import`, а новые версии будут игнорировать их в пользу файла `name.start`. После периода поддержки обеих версий удалите все строки `import` из ваших файлов `.pth`.131132## `sitecustomize`133134После этих манипуляций с путями предпринимается попытка импортировать модуль с именем `sitecustomize`, который может выполнять произвольные настройки для конкретного сайта. Обычно он создаётся системным администратором в каталоге site-packages. Если этот импорт завершается с исключением [`ImportError`](https://python-all.ru/3.16/library/exceptions.html#ImportError) или его подклассом, и атрибут исключения [`name`](https://python-all.ru/3.16/library/exceptions.html#ImportError.name) равен `'sitecustomize'`, он игнорируется без вывода сообщений. Если Python запущен без доступных потоков вывода, как в случае с `pythonw.exe` на Windows (используется по умолчанию для запуска IDLE), любые попытки вывода из `sitecustomize` игнорируются. Любое другое исключение приводит к тихому и, возможно, загадочному сбою процесса.135136## `usercustomize`137138После этого предпринимается попытка импортировать модуль с именем `usercustomize`, который может выполнять произвольные настройки для конкретного пользователя, если [`ENABLE_USER_SITE`](https://python-all.ru/3.16/library/site.html#site.ENABLE_USER_SITE) истинно. Этот файл должен быть создан в каталоге пользовательских site-packages (см. ниже), который является частью `sys.path`, если не отключён с помощью [`-s`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-s). Если этот импорт завершается с исключением [`ImportError`](https://python-all.ru/3.16/library/exceptions.html#ImportError) или его подклассом, и атрибут исключения [`name`](https://python-all.ru/3.16/library/exceptions.html#ImportError.name) равен `'usercustomize'`, он игнорируется без вывода сообщений.139140Обратите внимание, что для некоторых систем, не являющихся Unix, `sys.prefix` и `sys.exec_prefix` пусты, и манипуляции с путями пропускаются; однако импорт [`sitecustomize`](https://python-all.ru/3.16/library/site.html#module-sitecustomize) и `usercustomize` всё равно предпринимается.141142## Конфигурация Readline143144В системах, поддерживающих [`readline`](https://python-all.ru/3.16/library/readline.html#module-readline), этот модуль также импортирует и настраивает модуль [`rlcompleter`](https://python-all.ru/3.16/library/rlcompleter.html#module-rlcompleter), если Python запущен в [интерактивном режиме](https://python-all.ru/3.16/tutorial/interpreter.html#tut-interactive) и без опции [`-S`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-S). Поведение по умолчанию – включить автодополнение по табуляции и использовать `~/.python_history` в качестве файла для сохранения истории. Чтобы отключить это, удалите (или переопределите) атрибут [`sys.__interactivehook__`](https://python-all.ru/3.16/library/sys.html#sys.__interactivehook__) в вашем модуле [`sitecustomize`](https://python-all.ru/3.16/library/site.html#module-sitecustomize) или [`usercustomize`](https://python-all.ru/3.16/library/site.html#module-usercustomize), или в файле [`PYTHONSTARTUP`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONSTARTUP).145146Изменено в версии 3.4: Активация rlcompleter и истории стала автоматической.147148## Содержимое модуля149150#### `site.PREFIXES`151152Список префиксов для каталогов site-packages.153154#### `site.ENABLE_USER_SITE`155156Флаг, показывающий статус каталога пользовательских site-packages. `True` означает, что он включён и был добавлен в `sys.path`. `False` означает, что он был отключён по запросу пользователя (с помощью [`-s`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-s) или [`PYTHONNOUSERSITE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONNOUSERSITE)). `None` означает, что он был отключён по соображениям безопасности (несовпадение идентификатора пользователя или группы с эффективным идентификатором) или администратором.157158#### `site.USER_SITE`159160Путь к пользовательским site-packages для запущенного Python. Может быть `None`, если [`getusersitepackages()`](https://python-all.ru/3.16/library/site.html#site.getusersitepackages) ещё не была вызвана. Значение по умолчанию: `~/.local/lib/pythonX.Y[t]/site-packages` для UNIX и сборок macOS без фреймворка, `~/Library/Python/X.Y/lib/python/site-packages` для сборок macOS с фреймворком и `%APPDATA%\Python\PythonXY\site-packages` для Windows. Необязательный суффикс «t» указывает на сборку со свободной потоковой поддержкой. Этот каталог является сайтовым каталогом, что означает, что файлы `.pth` в нём будут обработаны.161162#### `site.USER_BASE`163164Путь к базовому каталогу для пользовательских site-packages. Может быть `None`, если [`getuserbase()`](https://python-all.ru/3.16/library/site.html#site.getuserbase) ещё не была вызвана. Значение по умолчанию: `~/.local` для UNIX и сборок macOS без фреймворка, `~/Library/Python/X.Y` для сборок macOS с фреймворком и `%APPDATA%\Python` для Windows. Это значение используется для вычисления каталогов установки скриптов, файлов данных, модулей Python и т.д. для [схемы установки для пользователя](https://python-all.ru/3.16/library/sysconfig.html#sysconfig-user-scheme). См. также [`PYTHONUSERBASE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONUSERBASE).165166#### `site.main()`167168Добавляет все стандартные каталоги, специфичные для сайта, в путь поиска модулей. Эта функция вызывается автоматически при импорте этого модуля, если только интерпретатор Python не был запущен с флагом [`-S`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-S).169170Изменено в версии 3.3: Эта функция ранее вызывалась безоговорочно.171172#### `site.makepath(*paths)`173174Объединяет *paths* с [`os.path.join()`](https://python-all.ru/3.16/library/os.path.html#os.path.join), пытается сделать результат абсолютным с помощью [`os.path.abspath()`](https://python-all.ru/3.16/library/os.path.html#os.path.abspath) и возвращает кортеж из двух элементов, содержащий абсолютный путь и его форму, нормализованную по регистру, как получено из [`os.path.normcase()`](https://python-all.ru/3.16/library/os.path.html#os.path.normcase). Если `os.path.abspath()` возбуждает [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), объединённый путь используется без изменений для нормализации регистра.175176Второй элемент возвращаемого кортежа – это форма, используемая во всём модуле `site` для сравнения путей в файловых системах, нечувствительных к регистру, и именно она заполняет множества `known_paths`, предотвращающие дублирование записей [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) в различных API этого модуля.177178#### `class site.StartupState(known_paths=None)`179180Экземпляры этого класса накапливают данные конфигурации запуска интерпретатора из одного или нескольких каталогов site. Они являются предпочтительным интерфейсом для пакетной обработки файлов `.pth` и `.start` в нескольких каталогах site, чтобы каждое расширение [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) было видимым до выполнения любого стартового кода.181182Необязательный аргумент *known\_paths* – это множество путей, нормализованных по регистру (которые могут быть получены с помощью [`makepath()`](https://python-all.ru/3.16/library/site.html#site.makepath)), используемое для предотвращения дублирования записей [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path). Когда `None` (значение по умолчанию), множество строится из текущего `sys.path`. [`main()`](https://python-all.ru/3.16/library/site.html#site.main) неявно использует экземпляр этого класса.183184Типичное использование:185186```python187state = site.StartupState()188for sitedir in site_dirs:189 state.addsitedir(sitedir)190state.process()191```192193Добавлено в версии 3.15.194195#### `addsitedir(sitedir)`196197Читает файлы `.pth` и `.start` в каталоге *sitedir* и записывает их расширения [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path), устаревшие строки `.pth` `import` и точки входа `.start` в это состояние. Записанные данные не применяются до вызова [`process()`](https://python-all.ru/3.16/library/site.html#site.StartupState.process).198199#### `addusersitepackages()`200201Добавляет каталог пользовательских site-packages, если он включён и существует. Данные запуска каталога накапливаются для последующей обработки [`process()`](https://python-all.ru/3.16/library/site.html#site.StartupState.process).202203#### `addsitepackages(prefixes=None)`204205Добавляет глобальные каталоги site-packages, вычисленные из *prefixes* или из глобального [`PREFIXES`](https://python-all.ru/3.16/library/site.html#site.PREFIXES), когда *prefixes* равно `None`. Данные запуска каждого каталога накапливаются для последующей обработки [`process()`](https://python-all.ru/3.16/library/site.html#site.StartupState.process).206207#### `process()`208209Применяет накопленное состояние, сначала добавляя расширения путей к [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path), затем выполняя точки входа файлов `.start` и строки `import` файлов `.pth` ([устарело](https://python-all.ru/3.16/library/site.html#site-pth-files)).210211Этот метод не является идемпотентным и не должен вызываться более одного раза на одном экземпляре. Это приведёт к повторному применению накопленного состояния, повторному запуску точек входа и строк `import`.212213#### `site.addsitedir(sitedir, known_paths=None)`214215Добавляет каталог в sys.path и разбирает файлы `.pth` и `.start`, найденные в этом каталоге. Обычно используется в [`sitecustomize`](https://python-all.ru/3.16/library/site.html#module-sitecustomize) или [`usercustomize`](https://python-all.ru/3.16/library/site.html#module-usercustomize) (см. выше).216217Аргумент *known\_paths* – необязательное множество путей, нормализованных по регистру, используемое для предотвращения дублирования записей [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path). Когда `None` (значение по умолчанию), множество строится из текущего `sys.path`.218219Для пакетной обработки в нескольких каталогах site явно создайте [`StartupState`](https://python-all.ru/3.16/library/site.html#site.StartupState) и вызовите [`StartupState.addsitedir()`](https://python-all.ru/3.16/library/site.html#site.StartupState.addsitedir) на нём; это откладывает обработку `.pth` и `.start` до одного вызова [`StartupState.process()`](https://python-all.ru/3.16/library/site.html#site.StartupState.process), гарантируя, что каждое расширение [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) будет видимым до выполнения любого стартового кода.220221Изменено в версии 3.15: Также обрабатывает файлы `.start`. См. [Стартовые точки входа (.start файлы)](https://python-all.ru/3.16/library/site.html#site-start-files).222223#### `site.getsitepackages()`224225Возвращает список всех глобальных каталогов site-packages.226227Добавлено в версии 3.2.228229#### `site.getuserbase()`230231Возвращает путь к базовому каталогу пользователя, [`USER_BASE`](https://python-all.ru/3.16/library/site.html#site.USER_BASE). Если он ещё не инициализирован, эта функция также устанавливает его с учётом [`PYTHONUSERBASE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONUSERBASE).232233Добавлено в версии 3.2.234235#### `site.getusersitepackages()`236237Возвращает путь к каталогу site-packages пользователя, [`USER_SITE`](https://python-all.ru/3.16/library/site.html#site.USER_SITE). Если он ещё не инициализирован, эта функция также устанавливает его с учётом [`USER_BASE`](https://python-all.ru/3.16/library/site.html#site.USER_BASE). Чтобы определить, был ли каталог site-packages пользователя добавлен в `sys.path`, следует использовать [`ENABLE_USER_SITE`](https://python-all.ru/3.16/library/site.html#site.ENABLE_USER_SITE).238239Добавлено в версии 3.2.240241## Интерфейс командной строки242243Модуль `site` также предоставляет способ получить каталоги пользователя из командной строки:244245```console246$ python -m site --user-site247/home/user/.local/lib/python3.11/site-packages248```249250Если он вызывается без аргументов, он выводит содержимое [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path) в стандартный вывод, затем значение [`USER_BASE`](https://python-all.ru/3.16/library/site.html#site.USER_BASE) и признак существования каталога, затем то же самое для [`USER_SITE`](https://python-all.ru/3.16/library/site.html#site.USER_SITE), и наконец значение [`ENABLE_USER_SITE`](https://python-all.ru/3.16/library/site.html#site.ENABLE_USER_SITE).251252#### `--user-base`253254Выводит путь к базовому каталогу пользователя.255256#### `--user-site`257258Выводит путь к каталогу site-packages пользователя.259260Если указаны обе опции, будут выведены базовый каталог пользователя и пользовательский каталог site-packages (всегда в этом порядке), разделённые [`os.pathsep`](https://python-all.ru/3.16/library/os.html#os.pathsep).261262Если указана любая опция, скрипт завершится с одним из следующих значений: `0`, если каталог site-packages пользователя включён; `1`, если он отключён пользователем; `2`, если он отключён по соображениям безопасности или администратором; и значение больше 2, если произошла ошибка.263264> **См. также**265>266> - [**PEP 370**](https://python-all.ru/3.16/library/site.html) – Каталог site-packages для каждого пользователя267> - [**PEP 829**](https://python-all.ru/3.16/library/site.html) – Стартовые точки входа и устаревание строк импорта в файлах `.pth`268> - [Инициализация пути поиска модулей sys.path](https://python-all.ru/3.16/library/sys_path_init.html#sys-path-init) – Инициализация [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path).269