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

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

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

How to Define Namespace Packages for Cross-Project Module Sharing in Python?

Определение пакетов пространства имен для совместного использования модулей между проектами

В Python пакеты пространства имен предоставляют средства структурирования связанного кода в нескольких проектах. Чтобы определить пакет пространства имен, важно избегать размещения файлов __init__.py в каталогах пакетов пространства имен.

Эволюция пакетов пространства имен

До Python 3.3 требовались пакеты пространства имен явное объявление с использованием pkgutil.extend_path() или pkg_resources.declare_namespace(). Однако начиная с Python 3.3 были введены неявные пакеты пространства имен, что позволило их беспрепятственное создание без какого-либо объявления.

Взаимодействие с обычными пакетами

Пакеты пространства имен могут сосуществовать с обычными пакетами , что позволяет создать иерархическую структуру. При импорте модуля в пакет пространства имен Python выполняет поиск в пути родительского пакета, расширяя поиск за пределы стандартного sys.path.

pkgutil.extend_path() vs . pkg_resources.declare_namespace()

В то время как pkgutil.extend_path() и pkg_resources.declare_namespace() ранее использовались для определения пакетов пространства имен, первый рекомендуется из-за его совместимости в будущем с неявными пакетами пространства имен.

Пример структуры

Рассмотрите следующая структура каталогов:

Package-1/namespace/
Package-2/namespace/
├── path1
│  └── package
│     ├── __init__.py
│     └── foo.py
├── path2
│  └── package
│     └── bar.py
└── path3
    └── package
        ├── __init__.py
        └── baz.py

При наличии необходимых объявлений Extend_path в файлах __init__.py импорт, такой как namespace.foo, namespace.bar и namespace.baz, будет успешным.

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

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

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

Copyright© 2022 湘ICP备2022001581号-3