Heim  >  Artikel  >  Backend-Entwicklung  >  Wie erstelle ich Namespace-Pakete für mehrere Python-Produkte?

Wie erstelle ich Namespace-Pakete für mehrere Python-Produkte?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-10-22 14:57:02729Durchsuche

How to Create Namespace Packages for Multiple Python Products?

Namespace-Pakete für mehrere Python-Produkte definieren

In Python ermöglichen Namespace-Pakete die Verteilung verwandter Bibliotheken in separaten Downloads. Dadurch können mehrere Python-Produkte Module innerhalb desselben Namespace definieren.

Problemübersicht

Wie können wir effektiv ein Namespace-Paket erstellen, das es mehr als einem Python-Produkt ermöglicht, Module in diesem Namespace zu definieren?

TL;DR

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.

Detaillierte Lösung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn