«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как создать пакеты пространства имен в Python для общих модулей?

Как создать пакеты пространства имен в Python для общих модулей?

Опубликовано 8 ноября 2024 г.
Просматривать:627

How to Create Namespace Packages in Python for Shared Modules?

Создание пакетов пространства имен в Python для распространения общих модулей

Введение

В Python пакеты пространства имен — это удобный подход для распространения связанных модулей. Они позволяют нескольким продуктам Python определять модули в одном пространстве имен, тем самым позволяя конечным пользователям беспрепятственно их импортировать.

Реализация пакетов пространства имен

Неявные пакеты пространства имен в Python 3.3

Начиная с Python 3.3, была введена концепция неявных пакетов пространства имен. Это устраняет необходимость в явных файлах __init__.py в каталогах пакетов пространства имен. Система импорта автоматически ищет в sys.path каталоги без файлов __init__.py и инициализирует их как пакеты пространства имен. () можно использовать для определения пакетов явного пространства имен:

from pkgutil import Extend_path __path__ = Extend_path(__path__, __name__)

Эта строка добавляет любые обычные пакеты, найденные в пути поиска, к атрибуту
from pkgutil import extend_path
__path__ = extend_path(__path__, __name__)

Использование обычного и пространства имен Пакеты вместеВ сценариях, где сосуществуют как обычные пакеты, так и пакеты пространства имен, упомянутый ранее метод Extend_path() был расширен для включения пакетов неявного пространства имен. Это позволяет использовать следующую структуру каталогов:

├── путь1. │   └── пакет │   ├── __init__.py │   └── foo.py ├── путь2 │   └── пакет │   └── bar.py └── путь3 └── пакет ├── __init__.py └── baz.py

При использовании файлов __init__.py с функцией Extend_path(), import package.foo, import package.bar и import package.baz будут работать должным образом.

├── path1
│   └── package
│       ├── __init__.py
│       └── foo.py
├── path2
│   └── package
│       └── bar.py
└── path3
    └── package
        ├── __init__.py
        └── baz.py

В отличие от pkgutil.extend_path(), функция pkg_resources.declare_namespace() не была обновлена ​​для поддержки неявных пакетов пространства имен. Поэтому рекомендуется использовать решение pkgutil.

Заявление о выпуске Эта статья воспроизводится: 1729575676, если есть какие -либо нарушения, пожалуйста, свяжитесь с учебным заведением[email protected], чтобы удалить его.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3