[Python-Programmierung] Einführung in Paket- und Datenpersonal [01/8]

1. Beschreibung

        Die Grundlage eines soliden Python-Projekts ist die Beherrschung von Modulen, Paketen und Importen. Der folgende Artikel ist Teil einer Reihe über Python für die Datentechnik und soll Dateningenieuren, Datenwissenschaftlern, Datenanalysten, Ingenieuren für maschinelles Lernen und allen anderen Python-Neulingen dabei helfen, die Grundlagen zu erlernen.
        Bisher umfasst dieser Einsteigerleitfaden:
Teil 1: Python-Pakete befasst sich mit Python-Modulen, den Grundlagen von Python-Paketen und dem Importieren von Modulen in Ihre eigenen Projekte. [Python-Programmierung] Einführung in Paket- und Datenpersonal [01/8] 
Teil 2: Einführung in Abhängigkeitsmanagement und virtuelle Umgebungen. [Python-Programmierung] Einführung in das Datenpersonal [02/8]
Teil 3: Best Practices für Projekte, umfasst 9 Best Practices und Beispiele für Bauprojekte. [Python-Programmierung] Best Practices für Projekte [03/8]
Teil 4: Dagster-Pipeline, wir haben die Schlüsselkonzepte für die Einrichtung von Dagster-Projekten und Datenbeständen untersucht. [Python-Programmierung] Vom Python-Projekt zu Dagster Pipelines [04/8]
Teil 5: Wir werden die Bedeutung von Umgebungsvariablen und deren Verwendung vorstellen. [Python-Programmierung] Umgebungsvariablen in Python [05/8]
Teil 6: Typhinweise oder wie Typhinweise Fehler reduzieren.
Teil 7: Muster oder Lernentwurfsmuster, die wiederverwendbare Lösungen für häufige Probleme beim Softwaredesign sind. [Python-Programmierung] Werksmodus [07/8]

 

        Dagster läuft auf Python und die meisten Dateningenieure oder Entwickler mit grundlegenden Python-Kenntnissen können schnell eine einfache Pipeline zum Laufen bringen. Aber einige Benutzer, die mit Python weniger vertraut sind, empfinden Python-Pakete als etwas Kopfzerbrechen.

        Sprechen wir also darüber, was Python-Pakete sind und wie man sie verwendet. Wir behandeln spezifische Themen, die Ihnen helfen zu verstehen, was beim Erstellen eines Python-Projekts erforderlich ist und wie sich dies auf komplexere Builds wie Datenpipelines und Orchestratoren auswirkt. In späteren Artikeln werden wir sehen, wie diese Konzepte auf Dagster anwendbar sind.

        Wenn Sie nur mit vorhandenen Codebasen oder  Jupyter-Notebooks gearbeitet haben , kann das Packen Ihres Codes von Grund auf überwältigend sein. Was ist eine Datei und wann sollte ich sie verwenden? Was sind relative Importe und absolute Importe? Lass uns eintauchen!__init__.py

2. Was ist ein Python-Paket?

        Wir packen Python-Code in Pakete, weil es die gemeinsame Nutzung und Wiederverwendung von Code innerhalb der Python-Community erleichtert. Ein Paket ist einfach eine Sammlung von Dateien und Verzeichnissen, die Code, Dokumentation und andere notwendige Dateien enthält, die wir später untersuchen werden.

        Wenn wir komplexen Code wiederverwenden möchten, verwenden wir Python-Pakete anstelle von Skriptdateien und Jupyter-Notebooks. Bei Skriptdateien kann der Code unübersichtlich und schwer zu warten sein, während Notizbücher oft für explorative Arbeiten verwendet werden, aber nicht einfach wiederverwendbar sind.

        Sie können sich ein Python-Paket als separates „Projekt“ vorstellen. Ein Projekt kann mehrere Module enthalten, von denen jedes einen bestimmten Satz verwandter Funktionen und Variablen enthält. Dies erleichtert Ihnen die Einbettung von Tools aus dem gewünschten „Projekt“ in Ihren eigenen Code.

2.1 Beginnen Sie mit Modulen

        Module sind die Bausteine ​​von Python-Paketen. Ein Modul ist eine einzelne Python-Datei, die Definitionen und Anweisungen enthält. Sie bieten eine Möglichkeit, Code in logische Einheiten zu strukturieren und Code über mehrere Projekte hinweg wiederzuverwenden.

        Um ein Modul in Ihrem Code zu verwenden, verwenden Sie die Importanweisung. Wenn Sie beispielsweise ein Modul mit einem Namen haben, können Sie dessen Funktionen und Variablen in Ihrem Code mit der folgenden Importanweisung verwenden:mymodule.py

import mymodule

        Sobald ein Modul importiert ist, kann auf seine Funktionen und Variablen mithilfe der dot()-Notation zugegriffen werden. Wenn die Datei „mymodule.py“ beispielsweise über eine aufgerufene Funktion verfügt, können Sie diese in Ihrem Code wie folgt verwenden:.greet

import mymodule
mymodule.greet("John")

Lassen Sie uns unser eigenes Beispielmodul erstellen, um dieses Konzept zu veranschaulichen. Erstellen Sie eine Datei mit dem Namen und fügen Sie den folgenden Code hinzu:examplemodule.py

def greet(name):
    print("Hello, " + name + "!")
def add(a, b):
    return a + b

Hier haben wir zwei Funktionen und in der Datei definiert. Diese Funktionen können nun importiert und in anderen Teilen des Codes verwendet werden.greetaddexamplemodule.py

2.2 Vom Modul zum Paket

Wenn Ihr Code wächst, kann es schwierig werden, alles in einem einzigen Modul zu verwalten und zu warten. Pakete bieten eine Möglichkeit, Ihren Code zu organisieren und in Module aufzuteilen, während alles organisiert und zugänglich bleibt.

Um ein Paket zu erstellen, erstellen Sie einfach ein Verzeichnis und platzieren Sie darin ein oder mehrere Module. Dieses Verzeichnis sollte eine spezielle Datei namens enthalten, die Python mitteilt, dass dieses Verzeichnis ein Paket ist und als Paket behandelt werden sollte. Die Datei kann leer bleiben oder Code enthalten, der beim Importieren des Pakets ausgeführt wird. Im Folgenden erläutern wir die Datei genauer.__init__.py__init__.py__init__.py

Lassen Sie uns das Beispielmodul aus dem vorherigen Abschnitt in ein Paket umgestalten. Erstellen Sie ein Verzeichnis mit dem Namen und verschieben Sie die Dateien dorthin. Erstellen Sie dann eine Datei mit dem Namen im Verzeichnis.examplepackageexamplemodule.py__init__.pyexamplepackage

Ihre Dateistruktur sollte nun wie folgt aussehen:

examplepackage/
    __init__.py
    examplemodule.py

Jetzt können Sie die Funktion wie folgt aus der Datei in Ihren Code importieren:examplemodule.py

import examplepackage.examplemodule

examplepackage.examplemodule.greet("John")
examplepackage.examplemodule.add(1, 2)

In diesem Beispiel haben wir die Dateien in ein Paket mit dem Namen umgestaltet. Funktionen in Dateien können jetzt wie zuvor importiert und im Code verwendet werden, jedoch mit dem zusätzlichen Vorteil der Organisation und Modularität durch Pakete.examplemodule.pyexamplepackageexamplemodule.py

2.3 Was ist __init__.py?

__init__.pyIst eine spezielle Datei in einem Python-Paket, die als Einstiegspunkt für das Paket dient. Es wird ausgeführt, wenn ein Paket importiert wird, und sein Code kann zum Initialisieren des Pakets oder zum Einrichten aller erforderlichen Komponenten verwendet werden. Diese Datei ist optional, wird jedoch normalerweise zum Definieren der öffentlichen Schnittstelle des Pakets verwendet, sodass andere Entwickler das Paket leichter verstehen und verwenden können.

In früheren Versionen von Python mussten Verzeichnisse als Pakete erkannt werden. Ab Python 3.3 ist es jedoch aufgrund der Einführung von PEP 420 optional, wodurch Pakete ohne Datei definiert werden können.__init__.py__init__.py__init__.py

Hier ist ein Beispiel für die Verwendung in einem Paket:__init__.py

# examplepackage/__init__.py

from .examplemodule import greet, add
__all__ = [
    'greet',
    'add',
]

        In diesem Beispiel importiert die Datei die Funktionen und aus der Datei und macht sie zu einem Teil der öffentlichen Schnittstelle des Pakets. Diese Variable wird verwendet, um die öffentliche Schnittstelle des Pakets zu definieren und anderen Entwicklern das Verständnis und die Verwendung des Pakets zu erleichtern.__init__.pygreetaddexamplemodule.py__all__

        Mit diesem Setup können Sie jetzt folgende Funktionen importieren:greetaddexamplepackage

import examplepackage
examplepackage.greet("John")
examplepackage.add(1, 2)

3. Wie verwaltet man Pakete in Python?

        Entwickler verteilen Pakete am häufigsten, indem sie sie in   ein öffentliches Repository namens Python Package Index (PyPI) hochladen. Wir verwenden ein System namens pip, das für „ Pip Installation Package“ steht. Es handelt sich um ein Befehlszeilentool, mit dem Benutzer Pakete von PyPI und anderen Paketindizes installieren und verwalten können.

        Wenn Sie Python Package Index (PyPI) verwendet haben, haben Sie das Paket heruntergeladen und installiert.pip install

        Paketverwaltungssysteme wie pip erleichtern die Installation, Aktualisierung und Entfernung von Paketen sowie die Verwaltung von Abhängigkeiten (Pakete, die andere Pakete benötigen, um ordnungsgemäß zu funktionieren) in Ihrem Projekt.

4. Wie funktioniert Pip?

  pip installist der Befehl, mit dem wir verschiedene Pakete aus einer Bibliothek namens PyPI oder sogar von Ihrem eigenen Computer herunterladen und installieren. Wenn Sie diesen Befehl ausführen, wird geprüft, ob das Paket auf PyPI verfügbar ist. Wenn ja, wird es heruntergeladen und auf Ihrem Computer installiert. Darüber hinaus werden alle in den Paketmetadaten aufgeführten Abhängigkeiten überprüft und bei Bedarf installiert. Schließlich verfolgt pip alle von Ihnen installierten Pakete, um Sie bei der späteren Aktualisierung oder Deinstallation zu unterstützen.

        Standardmäßig wird die neueste Version des Pakets installiert. Bei Bedarf können Sie jedoch auch eine bestimmte Version installieren, z. B. mit . Dies ist hilfreich, wenn Sie ein Problem mit Ihrem Code haben und eine bestimmte Version eines Pakets verwenden müssen.pip installpip install <PACKAGE>==<VERSION>pip install numpy==1.23.5

        Ist Ihnen jemals aufgefallen, dass beim Hinzufügen einer Funktion zu Ihrem Python-Code der Name, den Sie für die Installation verwenden, sich von dem Namen unterscheidet, den Sie für den Import verwendet haben? Dies liegt daran, dass es zwei Arten von Namen gibt:pip install

  • Distributionsname : Dies ist der Name, der zur Installation des Pakets verwendet wirdpip install
  • Paketname : Dies ist der Name, der beim Importieren des Pakets in Ihren Code verwendet wird.

        Distributionsnamen sind eindeutig und unterscheiden sich garantiert von anderen Paketnamen über PyPI (die Bibliothek, aus der Sie das Paket erhalten). Andererseits wird der Paketname von der Person gewählt, die das Paket erstellt hat, sodass er möglicherweise nicht eindeutig ist.

        Aus diesem Grund können Sie ein Paket mit dem Namen „ dagster-dbt “ mit installieren, es aber mit dem Namen „ dagster_dbt “ in Ihren Code importieren . Aus diesem Grund können Sie auch ein Paket namens „ scikit-learn “ mit installieren, es aber unter dem Namen „ sklearn “ in Ihren Code importieren .pip installpip install

5. Was sind relative Importe und absolute Importe?

        Beim Schreiben eines Pakets möchten wir manchmal Code aus einem anderen Modul im selben Paket importieren. Wir müssen zwischen zwei verschiedenen Möglichkeiten zum Importieren von Modulen oder Paketen in Python wählen : relativer Import oder absoluter Import.

        Relative Importe bestehen aus expliziten oder impliziten Importen, aber Sie müssen eigentlich nur über explizite relative Importe Bescheid wissen, da Python 3 keine impliziten relativen Importe unterstützt.

        Mit relativen Importen können Sie Module relativ zum aktuellen Modul importieren. Sie verwenden das Schlüsselwort „from“, gefolgt vom Namen des aktuellen Pakets und dem Namen des zu importierenden Moduls oder Pakets. Wenn Sie beispielsweise ein Paket haben, das nach zwei Modulen benannt ist, und Sie relative Importe verwenden können, um den Code daraus zu importieren, gehen Sie wie folgt vor:examplepackagemodule1.pymodule2.pymodule1.pymodule2.py

# examplepackage/module2.py

from .module1 import greeting
def greet(name):
    print(greeting + " " + name)

        Hier wird der relative Import verwendet, um Variablen von Datei zu Datei zu importieren. Das Vorstehende gibt an, dass Importe relativ zum aktuellen Modul erfolgen sollten.from .module1 import greetinggreetingmodule1.pymodule2.py.module1

        Mit absoluten Importen können Sie Module mit ihrem vollständigen Namen importieren, unabhängig von ihrer Position relativ zum aktuellen Modul. Sie verwenden den vollständigen Pfad des zu importierenden Moduls oder Pakets. Sie können beispielsweise einen absoluten Import verwenden, um Variablen wie folgt von einer Datei in eine Datei zu verschieben:greetingmodule1.pymodule2.py

# examplepackage/module2.py

from examplepackage.module1 import greeting
def greet(name):
    print(greeting + " " + name)

        Hier wird der absolute Import verwendet, um Begrüßungsvariablen von Datei zu Datei zu importieren. Der vollständige Name des Moduls wird verwendet, um den Speicherort des Moduls anzugeben.from examplepackage.module1 import greetingmodule1.pymodule2.pyexamplepackage.module1

        In Python 3 müssen relative Importe explizit sein , absolute Importe sind das Standardverhalten.

おすすめ

転載: blog.csdn.net/gongdiwudu/article/details/132757876
おすすめ