Namespace-Pakete in Python ermöglichen die Verteilung verwandter Bibliotheken als einzelne Downloads. In diesem Artikel wird erläutert, wie Sie Namespace-Pakete definieren, damit mehrere Python-Produkte einen gemeinsamen Namespace teilen können.
Implizite Namespace-Pakete
Ab Python 3.3 sind implizite Namespace-Pakete verfügbar . Diese Pakete sind Verzeichnisse ohne __init__.py-Dateien und werden gesucht, wenn im aktuellen Pfad kein Modul gefunden wird. Module und Pakete können unter impliziten Namespace-Paketen mithilfe der Punktnotation importiert werden.
Mischen von regulären und Namespace-Paketen
Um Interoperabilität zwischen regulären Paketen zu ermöglichen (mit __init__.py-Dateien) und Namespace-Pakete wurde die Methode pkgutil.extend_path() erweitert. Reguläre Pakete, die Namespace-Erweiterungen deklarieren, fügen ihrem __path__ sowohl reguläre als auch Namespace-Pakete hinzu.
Beispielverzeichnisstruktur
Bedenken Sie die folgende Verzeichnisstruktur:
├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
Mit den entsprechenden pkgutil.extend_path()-Deklarationen sind die folgenden Importe erfolgreich:
pkg_resources.declare_namespace()
Die Methode pkg_resources.declare_namespace() wurde nicht aktualisiert, um implizite Namespace-Pakete zu unterstützen.
Fazit
Die Definition von Namespace-Paketen ermöglicht Modularität und Flexibilität bei der Entwicklung von Python-Paketen. Durch die Nutzung impliziter Namespace-Pakete und der erweiterten pkgutil.extend_path()-Lösung können Entwickler Namespace-Pakete erstellen, die von mehreren Produkten gemeinsam genutzt und verwendet werden können.
Das obige ist der detaillierte Inhalt vonWie definiere ich Namespace-Pakete für mehrere Python-Produkte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!