Heim > Artikel > Backend-Entwicklung > Wie erstelle ich Namespace-Pakete für mehrere Python-Produkte?
In Python ermöglichen Namespace-Pakete die Verteilung verwandter Bibliotheken in separaten Downloads. Dadurch können mehrere Python-Produkte Module innerhalb desselben Namespace definieren.
Wie können wir effektiv ein Namespace-Paket erstellen, das es mehr als einem Python-Produkt ermöglicht, Module in diesem Namespace zu definieren?
In Python 3.3 und höher machen implizite Namespace-Pakete keine besonderen Schritte erforderlich. In früheren Versionen wird aufgrund der Kompatibilität mit impliziten Namespace-Paketen die Verwendung der Lösung pkgutil.extend_path() gegenüber pkg_resources.declare_namespace() empfohlen.
Vor Python 3.3 wurde die Lösung pkg_resources Die Funktion .declare_namespace() wurde zum Erstellen von Namespace-Paketen verwendet. Mit der Einführung impliziter Namespace-Pakete in Python 3.3 ist jedoch die Methode pkgutil.extend_path() zum bevorzugten Ansatz geworden. Dieser Ansatz kann auch sowohl implizite als auch explizite Namespace-Pakete verarbeiten, was ihn zukunftssicher macht.
Die Methode „extend_path()“ ändert das Attribut „__path__“ eines vorhandenen regulären Pakets, um zusätzliche Pfade einzuschließen. Auf diese Weise können Module aus verschiedenen Namespace-Paketen unter demselben Namespace importiert werden.
Bedenken Sie beispielsweise die folgende Verzeichnisstruktur:
├── path1 │ └── package │ ├── __init__.py │ └── foo.py ├── path2 │ └── package │ └── bar.py └── path3 └── package ├── __init__.py └── baz.py
Um diese Verzeichnisse als Teil des zugänglich zu machen Namespace-Paket kann der folgende Code zu den __init__.py-Dateien der regulären Pakete in Pfad1 und Pfad3 hinzugefügt werden:
<code class="python">from pkgutil import extend_path __path__ = extend_path(__path__, __name__)</code>
Mit dieser Lösung werden die folgenden Importe erfolgreich sein:
<code class="python">import package.foo import package.bar import package.baz</code>
Mit der Methode pkgutil.extend_path() können Namespace-Pakete effektiv erstellt und verwaltet werden, sodass mehrere Python-Produkte Code innerhalb desselben Namespace verwenden können.
Das obige ist der detaillierte Inhalt vonWie erstelle ich Namespace-Pakete für mehrere Python-Produkte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!