Module und Pakete

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden wir untersuchen, wie Python-Module und -Pakete verwendet werden, um Code zu organisieren und wiederzuverwenden. Wir beginnen mit einfachen Beispielen und bauen schrittweise auf komplexere auf. Am Ende dieses Labs werden Sie eine solide Vorstellung davon haben, wie Sie Module und Pakete in Ihren eigenen Projekten verwenden können.

Ziele

  • Python-Module
  • Python-Pakete
  • PyPI

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python(("Python")) -.-> python/NetworkingGroup(["Networking"]) python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/creating_modules("Creating Modules") python/ModulesandPackagesGroup -.-> python/using_packages("Using Packages") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/ErrorandExceptionHandlingGroup -.-> python/catching_exceptions("Catching Exceptions") python/NetworkingGroup -.-> python/http_requests("HTTP Requests") subgraph Lab Skills python/importing_modules -.-> lab-89{{"Module und Pakete"}} python/creating_modules -.-> lab-89{{"Module und Pakete"}} python/using_packages -.-> lab-89{{"Module und Pakete"}} python/standard_libraries -.-> lab-89{{"Module und Pakete"}} python/catching_exceptions -.-> lab-89{{"Module und Pakete"}} python/http_requests -.-> lab-89{{"Module und Pakete"}} end

Was sind Python-Module und -Pakete?

Ein Modul in Python ist eine Datei, die Definitionen von Funktionen, Klassen und Variablen enthält. Wir können Module verwenden, um große Programme in kleinere, leichter verwaltbare Teile aufzuteilen. Module erleichtern es auch, Code in mehreren Projekten wiederzuverwenden.

Ein Paket ist eine Sammlung von Modulen. Pakete ermöglichen es uns, verwandte Module zusammenzuzählen und auf sie mit einer einfachen Punktnotation zuzugreifen.

Es gibt mehrere Kategorien von Python-Modulen und -Paketen:

  1. Eingebaute Module: Dies sind Module, die mit dem Python-Interpreter mitgeliefert werden und für alle Python-Programme verfügbar sind. Beispiele für eingebaute Module sind math, os, sys und random.
  2. Module der Standardbibliothek: Dies sind Module, die Teil der Python-Standardbibliothek sind, aber nicht in den Interpreter eingebaut sind. Sie können auf die gleiche Weise importiert und verwendet werden wie eingebaute Module. Beispiele für Module der Standardbibliothek sind json, urllib, re und csv.
  3. Drittanbieter-Module: Dies sind Module, die von Personen oder Organisationen außerhalb des Python-Kerntwicklungsteams entwickelt und unterhalten werden. Sie können auf die gleiche Weise importiert und verwendet werden wie eingebaute und Standardbibliothekmodule, müssen jedoch separat installiert werden. Es gibt viele Drittanbieter-Module, die eine Vielzahl von Themen und Zwecken abdecken. Einige Beispiele sind numpy, pandas, requests und beautifulsoup4.
  4. Lokale Module: Dies sind Module, die im selben Verzeichnis wie das Python-Programm liegen, das sie verwendet. Wir können lokale Module mit der import-Anweisung und dem Modulnamen importieren, ohne den vollständigen Pfad anzugeben.
  5. Relative Imports: Dies sind Imports, die relativ zum aktuellen Paket oder Modul sind. Sie ermöglichen es uns, Module und Pakete zu importieren, die sich in einem anderen Verzeichnis als das aktuelle befinden. Wir können relative Imports verwenden, um Module und Pakete zu importieren, die Teil des gleichen Projekts sind, aber in einer anderen Verzeichnisstruktur organisiert sind.

Zusammenfassend können Python-Module und -Pakete basierend auf ihrer Herkunft und der Zugangsmethode klassifiziert werden. Eingebaute und Standardbibliothekmodule werden mit dem Python-Interpreter mitgeliefert und sind für alle Python-Programme verfügbar, während Drittanbieter-Module separat installiert werden müssen. Lokale Module und relative Imports ermöglichen es uns, Module und Pakete zu importieren, die sich im selben Projekt befinden, aber in einer anderen Verzeichnisstruktur.

Hier ist ein Beispiel dafür, wie man eines der eingebauten Python-Module, das math-Modul, verwendet.

Öffnen Sie eine neue Python-Interpreter-Sitzung und geben Sie folgenden Code ein:

python3
import math

## Berechnen der Quadratwurzel von 16
x = math.sqrt(16)
print(x)  ## Ausgabe: 4.0

## Berechnen der Sinus von Pi
y = math.sin(math.pi)
print(y)  ## Ausgabe: 1.2246467991473532e-16

## Berechnen der Fakultät von 5
z = math.factorial(5)
print(z)  ## Ausgabe: 120

Das math-Modul ist ein eingebautes Python-Modul, das mathematische Funktionen und Konstanten bereitstellt. Einige der in dem math-Modul verfügbaren Funktionen sind sqrt(), sin(), cos(), tan(), log(), exp() und factorial(). Das math-Modul stellt auch Konstanten wie pi und e zur Verfügung.

Wir können die import-Anweisung verwenden, um das math-Modul zu importieren und dann seine Funktionen aufzurufen und seine Konstanten in unserem Code zu verwenden.

Im obigen Beispiel verwenden wir die sqrt()-Funktion, um die Quadratwurzel von 16 zu berechnen, die sin()-Funktion, um den Sinus von pi zu berechnen und die factorial()-Funktion, um die Fakultät von 5 zu berechnen. Wir verwenden auch die pi-Konstante, um den Wert von pi in der Funktion sin() anzugeben.

Es gibt viele andere eingebaute Python-Module, die nützliche Funktionen und Konstanten bereitstellen. Einige Beispiele sind das os-Modul zum Interagieren mit dem Betriebssystem, das datetime-Modul zum Arbeiten mit Daten und Zeiten und das random-Modul zum Generieren von Zufallszahlen. Sie können eine vollständige Liste der eingebauten Python-Module in der Dokumentation finden.

Erstellen eines Python-Moduls

In diesem Schritt werden wir ein Python-Modul erstellen. Ein Modul ist eine Datei, die Python-Code enthält.

Hier ist ein einfaches Beispiel dafür, wie man ein Python-Modul erstellt und verwendet:

Erstellen Sie zunächst eine neue Datei mit dem Namen my_module.py im Pfad /home/labex/project/. Dies wird unsere Moduldatei sein.

In der Datei my_module.py definieren Sie eine Funktion namens say_hello(), die einen Gruß in die Konsole ausgibt:

def say_hello():
    print("Hello from my_module!")

Speichern Sie die Datei.

Öffnen Sie nun eine neue Python-Datei (oder starten Sie den Python-Interpreter) und importieren Sie das my_module-Modul mit der import-Anweisung:

import my_module

Um die say_hello()-Funktion aus dem my_module-Modul zu verwenden, können wir sie wie folgt aufrufen:

my_module.say_hello()  ## Ausgabe: "Hello from my_module!"

Das war's! Wir haben erfolgreich ein Python-Modul erstellt und verwendet.

ImportError-Exception

Beachten Sie, dass Python beim Importieren eines Moduls nach der Moduldatei im aktuellen Verzeichnis und in allen Verzeichnissen sucht, die in der Umgebungsvariable PYTHONPATH aufgelistet sind. Wenn die Moduldatei nicht gefunden wird, erhalten wir eine ImportError-Exception.

Versuchen wir, ein nicht existierendes Modul zu importieren.

Öffnen Sie ein neues Terminalfenster und wechseln Sie das aktuelle Verzeichnis in /home/labex/:

cd /home/labex/

Öffnen Sie nun einen neuen Python-Interpreter und versuchen Sie, das my_module-Modul zu importieren:

python3
import my_module

Sie sollten eine ImportError-Exception erhalten:

ModuleNotFoundError: No module named'my_module'

Sie können einem Verzeichnis die Umgebungsvariable PYTHONPATH hinzufügen, indem Sie die folgende Zeile zu Ihrer Python-Datei hinzufügen:

import sys
## my_module.py befindet sich im Verzeichnis /home/labex/project/
sys.path.append("/home/labex/project")

import my_module
my_module.say_hello()

Beachten Sie, dass die sys.path.append()-Funktion vor der import-Anweisung aufgerufen werden muss.

Erstellen eines Python-Pakets

In diesem Schritt werden wir ein Python-Paket erstellen. Ein Paket ist ein Verzeichnis, das Python-Module enthält.

Lassen Sie uns das Beispiel aus dem vorherigen Schritt erweitern.

Erstellen Sie zunächst ein neues Verzeichnis namens my_package im Pfad /home/labex/project/. Dies wird unser Paketverzeichnis sein.

Im Verzeichnis /home/labex/project/my_package erstellen Sie eine neue Datei namens __init__.py. Dies ist eine spezielle Datei, die Python mitteilt, dass das my_package-Verzeichnis als Paket behandelt werden soll.

Im my_package-Verzeichnis erstellen Sie eine neue Datei namens my_module.py. Dies wird unsere Moduldatei sein.

In der Datei my_module.py definieren Sie eine Funktion namens say_hello(), die einen Gruß in die Konsole ausgibt:

def say_hello():
    print("Hello from my_module!")

Öffnen Sie nun eine neue Python-Datei (oder starten Sie den Python-Interpreter) und importieren Sie das my_package-Paket:

import my_package

Um die say_hello()-Funktion aus dem my_module-Modul zu verwenden, können wir sie wie folgt aufrufen:

my_package.my_module.say_hello()  ## Ausgabe: "Hello from my_module!"

Das war's! Wir haben erfolgreich ein Python-Paket mit einem Modul erstellt und verwendet.

Hier ist die Verzeichnisstruktur unseres Projekts:

my_package/
├── __init__.py
└── my_module.py

Dieses Beispiel zeigt, wie wir ein Paket erstellen und auf seine Module mit der Punktnotation zugreifen können. Das my_package-Paket enthält das my_module-Modul, und wir können die say_hello()-Funktion aus dem my_module-Modul aufrufen, indem wir my_package.my_module.say_hello() aufrufen.

In diesem Zusammenhang ist my_package ein Python-Paket und my_module ein Python-Modul. Pakete ermöglichen es uns, unseren Code in einer hierarchischen Struktur zu organisieren, was für größere Projekte mit vielen Modulen hilfreich sein kann.

Zusammenfassend ist der Hauptunterschied zwischen einem Paket und einem Modul darin, dass ein Paket eine Sammlung von Modulen ist, auf die mit der Punktnotation zugegriffen werden kann, während ein Modul eine eigenständige Datei ist, die Definitionen von Funktionen, Klassen und Variablen enthält.

Drittanbieter-Pakete

Python-Drittanbieter-Pakete sind Pakete, die von Personen oder Organisationen außerhalb des Python-Kerntwicklungsteams entwickelt und unterhalten werden. Sie können auf die gleiche Weise importiert und verwendet werden wie eingebaute und Standardbibliothekmodule, müssen jedoch separat installiert werden.

Es gibt viele Drittanbieter-Pakete für Python, die eine Vielzahl von Themen und Zwecken abdecken. Einige Beispiele sind numpy für wissenschaftliches Rechnen, pandas für Datenanalyse, requests für die Arbeit mit HTTP-Anfragen und beautifulsoup4 für das Scraping von Websites.

Der wichtigste Grund für die Popularität von Python ist die Fülle an Drittanbieter-Paketen.

Um ein Drittanbieter-Paket zu installieren, können wir den Paketmanager pip verwenden, der standardmäßig mit Python mitgeliefert wird. Beispielsweise können wir den folgenden Befehl ausführen, um das requests-Paket zu installieren:

pip install requests

Wir können auch andere Paketmanager wie conda verwenden, um Drittanbieter-Pakete zu installieren. Weitere Informationen finden Sie unter Anaconda.

Sobald das Paket installiert ist, können wir es importieren und in unserem Python-Code verwenden. Beispielsweise zeigt das folgende Codefragment, wie wir das requests-Paket verwenden, um eine HTTP-Anfrage zu senden und die Antwort auszugeben:

python3
import requests

response = requests.get("https://www.example.com")
print(response.text)

Dieser Code sendet eine HTTP GET-Anfrage an die URL https://www.example.com mithilfe des requests-Pakets und gibt dann den Antworttext in die Konsole aus.

Die requests.get()-Funktion sendet eine HTTP GET-Anfrage an die angegebene URL und gibt ein HTTPResponse-Objekt zurück, das die Antwortdaten enthält. Das Antwortobjekt hat verschiedene Attribute und Methoden, die es uns ermöglichen, auf die Antwortdaten zuzugreifen und zu manipulieren.

In diesem Fall enthält das response.text-Attribut den Antwortkörper als Zeichenfolge. Indem wir print(response.text) aufrufen, geben wir den Antwortkörper in die Konsole aus.

Python-Drittanbieter-Pakete sind ein wichtiger Bestandteil der Python-Ekosystem, da sie fertige Lösungen für häufige Aufgaben bieten und die Funktionalität von Python erweitern. Sie können uns Zeit und Arbeit ersparen, indem sie vorgefertigte Lösungen zur Verfügung stellen, die wir in unseren Projekten verwenden können, anstatt alles von Grund auf zu entwickeln.

Neben der eingesparten Zeit und Arbeit können Drittanbieter-Pakete auch dazu beitragen, dass wir zuverlässigeres und wartbareres Code schreiben. Indem wir gut getestete, weit verbreitete Pakete verwenden, können wir auf die Arbeit anderer zurückgreifen und uns auf das Lösen unseres spezifischen Problems konzentrieren.

Insgesamt sind Python-Drittanbieter-Pakete eine wichtige Ressource für die Erweiterung der Funktionalität von Python und für das Lösen von häufigen Aufgaben. Sie können uns Zeit und Arbeit ersparen, helfen uns, sich mit anderen Tools und Bibliotheken zu integrieren und tragen zur Zuverlässigkeit und Wartbarkeit unseres Codes bei.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man Python-Module und -Pakete verwendet, um Code zu organisieren und wiederzuverwenden. Wir haben gesehen, wie man Module und Pakete in unseren Programmen importiert und verwendet, und wir haben auch gelernt, wie man eigene Pakete erstellt. Indem wir Module und Pakete verwenden, können wir saubereren und wartbareren Code schreiben.