Python Package

Table of Contents

 

In diesem Artikel erfahren Sie, wie Sie Ihre Codebasis mithilfe von Python Packages in saubere, effiziente Module aufteilen. Außerdem lernen Sie, Ihre eigenen Packages oder Packages von Drittanbietern in ein Python-Programm zu importieren und zu verwenden.

 

Was sind Packages?

 

Normalerweise speichern wir nicht alle unsere Dateien auf unserem Computer am selben Ort. Wir verwenden eine gut organisierte Verzeichnishierarchie für einen einfacheren Zugriff.

Ähnliche Dateien werden im selben Verzeichnis gespeichert, zum Beispiel können wir alle Lieder im Verzeichnis “Musik” aufbewahren. Analog dazu gibt es in Python Packages für Verzeichnisse und Module  für Dateien.

Da unser Anwendungsprogramm mit vielen Modulen größer wird, platzieren wir ähnliche Module in einem Package und unterschiedliche Module in verschiedenen Packages. Dies macht ein Projekt (Programm) einfach zu verwalten und konzeptionell klar.

Ebenso wie ein Verzeichnis Unterverzeichnisse und Dateien enthalten kann, kann ein Python-Package Unterpackages und Module haben.

Ein Verzeichnis muss eine Datei namens enthalten __init__.py damit Python es als Package betrachten kann. Diese Datei kann leer gelassen werden, aber im Allgemeinen platzieren wir den Initialisierungscode für dieses Package in dieser Datei.

Hier ist ein Beispiel. Angenommen, wir entwickeln ein Spiel. Eine mögliche Organisation von Packages und Modulen könnte wie in der Abbildung unten gezeigt aussehen.

Package Module Structure in Python Programming

Packagemodulstruktur in der Python-Programmierung

 


 

 

Modul aus einem Package importieren

 

Wir können Module aus Packages importieren, indem wir den Punktoperator (.) verwenden.
Wenn wir beispielsweise die importieren möchten start Modul im obigen Beispiel kann dies wie folgt erfolgen:

 

import Game.Level.start

 

Wenn dieses Modul nun eine Funktion enthält  named select_difficulty(),wir müssen den vollständigen Namen verwenden, um darauf zu verweisen.

 

Game.Level.start.select_difficulty(2)

 

Wenn dieses Konstrukt langwierig erscheint, können wir das Modul ohne das Package präfix wie folgt importieren:

from Game.Level import start

 

Wir können die Funktion nun einfach wie folgt aufrufen:

start.select_difficulty(2)

 

Eine andere Möglichkeit, nur die erforderliche Funktion (oder Klasse oder Variable) aus einem Modul innerhalb eines Package zu importieren, wäre wie folgt:

from Game.Level.start import select_difficulty

 

Jetzt können wir diese Funktion direkt aufrufen.

Obwohl einfacher, wird diese Methode nicht empfohlen. Die Verwendung des vollständigen Namespace  vermeidet Verwirrung und verhindert, dass zwei gleiche Bezeichnernamen kollidieren.

 

Beim Importieren von Packages sucht Python in der Liste der Verzeichnisse, die in sys.path, ähnlich wie für Suchpfad des Moduls.