Документация Python неофициальный перевод

pkgutil.md

44 строк · 4.8 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.0/library/pkgutil.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `pkgutil` – Утилита расширения пакетов89Этот модуль предоставляет функции для работы с пакетами:1011#### `[pkgutil.extend_path]pkgutil.extend_path(path, name)`1213Расширяет путь поиска для модулей, составляющих пакет. Предполагаемое использование – разместить следующий код в `__init__.py` пакета:1415```python16from pkgutil import extend_path17__path__ = extend_path(__path__, __name__)18```1920Это добавит в `__path__` пакета все подкаталоги каталогов из `sys.path`, названные в честь пакета. Это полезно, если нужно распространять разные части одного логического пакета в виде нескольких каталогов.2122Также ищет файлы `*.pkg`, начиная с того места, где `*` совпадает с аргументом *name*. Эта функция похожа на файлы `*.pth` (см. модуль [`site`](https://python-all.ru/3.0/library/site.html#module-site) для получения дополнительной информации), за исключением того, что она не обрабатывает особым образом строки, начинающиеся с `import`. Файл `*.pkg` принимается как есть: помимо проверки на дубликаты, все записи, найденные в файле `*.pkg`, добавляются в путь, независимо от того, существуют ли они в файловой системе. (Это особенность.)2324Если входной путь не является списком (как в случае замороженных пакетов), он возвращается без изменений. Входной путь не модифицируется; возвращается расширенная копия. Элементы добавляются только в конец этой копии.2526Предполагается, что `sys.path` является последовательностью. Элементы `sys.path`, которые не являются строками, ссылающимися на существующие каталоги, игнорируются. Элементы Unicode в `sys.path`, которые вызывают ошибки при использовании в качестве имен файлов, могут привести к тому, что эта функция вызовет исключение (в соответствии с поведением [`os.path.isdir()`](https://python-all.ru/3.0/library/os.path.html#os.path.isdir)).2728#### `[pkgutil.get_data]pkgutil.get_data(package, resource)`2930Получить ресурс из пакета.3132Это обёртка для API [`get_data()`](https://python-all.ru/3.0/library/pkgutil.html#pkgutil.get_data) загрузчика PEP 302. Аргумент package должен быть именем пакета в стандартном формате модуля (foo.bar). Аргумент resource должен быть относительным именем файла, с использованием `/` в качестве разделителя путей. Имя родительского каталога `..` не допускается, равно как и абсолютное имя (начинающееся с `/`).3334Функция возвращает двоичную строку, содержащую указанный ресурс.3536Для пакетов, расположенных в файловой системе, которые уже были импортированы, это приблизительный эквивалент следующего:3738```python39d = os.path.dirname(sys.modules[package].__file__)40data = open(os.path.join(d, resource), 'rb').read()41```4243Если пакет не удается найти или загрузить, или он использует загрузчик PEP 302, не поддерживающий [`get_data()`](https://python-all.ru/3.0/library/pkgutil.html#pkgutil.get_data), то возвращается None.44