Skip to main content

Der ultimative Leitfaden zum Erstellen eines sicheren Python-Pakets

Artikel von
Headshot of Gourav Singh Bais

Gourav Singh Bais

feature assert in python

8. Mai 2024

0 Min. Lesezeit

Zum Erstellen eines Python-Pakets sind mehrere Schritte erforderlich: Sie müssen eine geeignete Verzeichnisstruktur festlegen, Paketdateien erstellen und die Paketmetadaten konfigurieren, bevor Sie das Paket bereitstellen. Außerdem müssen Sie ein Unterverzeichnis für Tests anlegen und eine klare Dokumentation erstellen. Sobald das Paket fertig ist, können Sie es in verschiedenen Paketarchiven veröffentlichen. Danach ist Ihr Python-Paket bereit, damit andere es installieren und verwenden können.

Dieser Leitfaden beschreibt alle Schritte zum Erstellen eines modernen Python-Pakets. Den Code für dieses Tutorial finden Sie in diesem GitHub-Repository. Nach der Umsetzung dieses Tutorials werden Sie feststellen, dass sich ein Python-Paket genauso einfach erstellen lässt wie ein vorhandenes zu verwenden. Doch beginnen wir zunächst damit, wie Sie Pakete in Python verwenden.

So erstellen Sie ein Python-Paket

Bevor Sie mit dem Erstellen eines Python-Pakets beginnen, sollten Sie sich mit den verschiedenen Installations- und Importmethoden sowie mit dem allgemeinen Aufbau von Paketen vertraut machen. 

Pakete in Python installieren

Um Python-Pakete zu verwenden, können Sie auf öffentlich verfügbare Pakete von PyPI oder auf private Indizes mit proprietärem Code innerhalb einer Organisation zurückgreifen. 

Es gibt zwei verschiedene Möglichkeiten, ein Python-Paket zu installieren:

PyPI verwenden

PyPI ist das offizielle Repository für alle öffentlichen Python-Pakete.

$ pip install package_name

Einen privaten Index verwenden

In manchen Fällen benötigen Sie sowohl öffentlich verfügbare Pakete von PyPI als auch privat verfügbare Pakete aus einem privaten Index. Private Indizes werden in der Regel in großen Unternehmen für proprietäre Projekte verwendet, deren Quellcode nicht öffentlich zugänglich ist. Über diese Indizes können Sie Python-Pakete innerhalb Ihrer Organisation speichern und verteilen. 

Um Pakete aus einem privaten Index zu installieren, können Sie den Befehl pip install mit dem Flag -- index-url verwenden. Geben Sie anschließend die URL des privaten Index und den Paketnamen an. Mit folgendem Befehl installieren Sie beispielsweise ein Paket:

$ pip install -- index-url <private-index-url> package_name

Aus Sicherheitsgründen wird empfohlen, für jeden privaten Paketindex Transport Layer Security (TLS) zu verwenden. Verfügt Ihr privater Index nicht über ein gültiges TLS-Zertifikat, müssen Sie im Befehl pip install das Flag  -- trusted-host angeben, um Pakete daraus zu installieren. Ohne gültiges TLS-Zertifikat betrachtet pip den Index als nicht vertrauenswürdig.

Ein Python-Paket importieren

Sie können ein Paket in Python mit der Anweisung import importieren. Der Python-Interpreter sucht dann im Cache, in den integrierten Bibliotheken und in den installierten Pfaden nach dem Paket. Wird das Paket nicht gefunden, wird ein ImportError ausgelöst.

Sie können auch bestimmte Module aus einem Paket importieren, indem Sie das Schlüsselwort from verwenden, wie hier gezeigt:

from datetime import date

Mit den folgenden Befehlen können Sie auch mehrere oder alle Module eines Pakets importieren:

from datetime import date, datetime
from datetime import *

Mit dem Schlüsselwort as können Sie einem Paket auch einen Alias zuweisen. So können Sie beispielsweise das Paket `pandas` als pd verwenden:

import pandas as pd

Aufbau von Python-Paketen

Python-Pakete müssen einer Verzeichnisstruktur folgen, die die folgenden Dateien und Unterverzeichnisse enthält:

  • Ein Verzeichnis src mit einem Unterverzeichnis für den Paketnamen, einschließlich einer Initialisierungsdatei __init__.py. Das Verzeichnis src enthält außerdem eine oder mehrere Dateien module.py mit dem Quellcode des Pakets.

  • Ein Verzeichnis tests mit Skripten zum Testen verschiedener Paketfunktionen. Ob Sie dieses Verzeichnis in das Paket aufnehmen, bleibt Ihnen überlassen.

  • Die Datei pyproject.toml enthält Konfigurationsdetails und Abhängigkeiten Ihres Pakets.

  • Die Datei LICENSE legt die Nutzungsbedingungen Ihres Pakets fest. Sie können aus zahlreichen Lizenzen wählen oder eine eigene erstellen.

  • Die Datei README.md enthält eine klare Dokumentation, eine Gebrauchsanleitung und weitere hilfreiche Informationen für die Nutzerinnen und Nutzer des Pakets.

Die zuvor genannten Dateien und Verzeichnisse sind die grundlegenden Anforderungen für die Erstellung Ihres Pakets. Bei komplexeren Paketen finden Sie möglicherweise weitere Dateien, Untermodule oder Tests.

Ihren Code paketieren

Um ein Python-Paket öffentlich verfügbar zu machen, müssen Sie zunächst eines erstellen. In diesem Tutorial erstellen Sie ein einfaches Python-Programm, das Kilometer (km) in Meilen (mi) umrechnet.

Einen Namen für Ihr Python-Paket wählen

Um einen Namen für Ihr Python-Paket zu wählen, müssen Sie auf PyPI nachsehen, ob Ihr Wunschname bereits vergeben ist. Entwicklerinnen und Entwickler verwenden für PyPI und ihr Paket üblicherweise denselben Namen. Sie können bei Bedarf aber auch unterschiedliche Namen wählen. 

Bei der Installation eines Pakets müssen Sie den PyPI-Namen verwenden. Beim Importieren müssen Sie den Paketnamen verwenden.

Ihr Python-Paket konfigurieren

Strukturieren Sie Ihr Paket gemäß der zuvor beschriebenen Verzeichnisstruktur. Fügen Sie diesen Code in die Datei km2miles.py ein. Erstellen Sie eine Datei __init__.py mit diesem Code.

Die Datei km2miles.py enthält eine Funktion, die mithilfe der NumPy-Bibliothek Kilometer in Meilen umrechnet. Die Datei __init__.py importiert das Hauptmodul und gibt die Version des Pakets an. 

Bevor Sie das Paket veröffentlichen, müssen Sie die Datei pyproject.toml konfigurieren. Darin legen Sie auch das Build-System fest, wie im nächsten Abschnitt beschrieben. 

Das Build-System konfigurieren

Sie benötigen ein Build-System, um die Dateien für die Veröffentlichung Ihres Python-Pakets aufzubereiten. Sie können ein Build-Frontend wie pip oder ein Build-Backend wie setuptools, Flit, Hatchling oder PDM verwenden.

In diesem Tutorial verwenden Sie setuptools, ein Build-Tool, das Abhängigkeiten für vorhandene Python-Pakete automatisch auflöst. Das ist hilfreich, wenn Sie ein Python-Paket für einen konkreten Anwendungsfall erstellen. 

Das Build-System verwendet die Datei pyproject.toml, da sie die Anweisungen für die Backend-Tools zur Erstellung der Projektpakete für die Distribution enthält. Die Spezifikationen des Build-Systems werden in dieser Datei festgelegt:

# pyproject.toml
[build-system]
requires = ["setuptools>=61.0.0", "wheel"]
build-backend = "setuptools.build_meta"

Vielleicht finden Sie online Tutorials, in denen die Datei pyproject.toml nicht verwendet wird und stattdessen eine Datei setup.py zur Konfiguration der Python-Pakete dient. Das liegt daran, dass setuptools früher die Datei setup.py verwendete, um den Installationsprozess komplexer Pakete auszuführen. Bei modernen Projekten wird jedoch generell empfohlen, Python-Projekte mit der Datei pyproject.toml statt mit den Dateien setup.py oder setup.cfg zu konfigurieren.

Das Python-Paket konfigurieren

Nachdem Sie das Build-System konfiguriert haben, müssen Sie die paketspezifischen Informationen festlegen. Diese Konfigurationsdetails stehen in der Datei .toml unterhalb der Angaben zum Build-System:

[project]
name = "milesConverter"
version = "1.0.0"
description = "Convert KMs to Miles"
readme = "README.md"
authors = [{ name = "name", email = "name@gmail.com" }]
license = { file = "LICENSE" }
classifiers = [
 "License :: OSI Approved :: MIT License",
 "Programming Language :: Python",
 "Programming Language :: Python :: 3",
 "Operating System :: MacOS :: MacOS X",
 "Operating System :: Microsoft :: Windows",
 "Intended Audience :: Education"
]
keywords = ["converter", "miles", "kms"]

Die folgenden Angaben sind üblicherweise Teil der Projektkonfiguration und sollten generell in allen Paketen enthalten sein. Allerdings sind nicht alle Angaben verpflichtend:

  • Name: (verpflichtend) Der Name des Pakets, der auf PyPI verwendet wird

  • Version: (verpflichtend) Die aktuelle Version des Pakets, die auch auf der PyPI-Hauptseite des Pakets angezeigt wird.

  • Description: (verpflichtend) Zusätzliche Informationen zum Paket, die auf der PyPI-Seite angezeigt werden.

  • Authors: (verpflichtend) Informationen zu den Entwicklerinnen und Entwicklern des Pakets.

  • Readme: (optional) Eine Beschreibung des Pakets im Markdown-Format mit Informationen zur Verwendung. Sie wird auf der PyPI-Hauptseite des Pakets angezeigt.

  • License: (optional, aber dringend empfohlen) Informationen dazu, wie andere das Paket verwenden dürfen.

  • Classifiers: (optional) Kategorien zur Beschreibung der Zielgruppe, Plattformkompatibilität und Reife des Pakets. Sie erleichtern die Suche auf PyPI. Hier finden Sie eine vollständige Liste der zulässigen Classifier.

  • Keywords: (optional) Eine Liste von Wörtern, mit denen Nutzerinnen und Nutzer das Paket über verwandte Suchbegriffe auf PyPI finden können. Wer beispielsweise ein Paket zur Umrechnung von Meilen in Kilometer sucht, könnte nach Begriffen wie "converter", "miles" und "kms" suchen.

Abhängigkeiten angeben

Um Abhängigkeiten in der Datei `pyproject.toml`) eines Projekts anzugeben, fügen Sie nach der Projektbeschreibung ein Feld dependencies hinzu:

dependencies = ["numpy >= 1.20.3"]

Damit wird angegeben, dass das Projekt von der NumPy-Bibliothek abhängig ist. Bei der Installation des Projekts löst pip diese Abhängigkeiten auf. Beachten Sie beim Angeben von Abhängigkeiten Folgendes:

  • Geben Sie keine Abhängigkeiten an, die bereits durch Drittanbieterpakete abgedeckt werden.

  • Verwenden Sie >=, um eine Mindestversion für Abhängigkeiten anzugeben, die für neue Funktionen einer bestimmten Version erforderlich sind.

  • Verwenden Sie <, um eine Höchstversion für Abhängigkeiten anzugeben, die bei einem Versionssprung zu einer Hauptversion Kompatibilitätsprobleme verursachen könnten.

Optionale Abhängigkeiten lassen sich mit dem Feld project.optional-dependencies hinzufügen:

[project.optional-dependencies]
dev = ["pip-tools", "pytest"]

Diese Abhängigkeiten werden nicht automatisch installiert. Sie können aber bei der Installation des Projekts mit folgender Syntax angegeben werden: pip install package_name[optional_dependency_name].

Ihr Paket versionieren

Wie weiter oben im Tutorial beschrieben, können Sie Ihr Python-Paket mit einer Versionsnummer versionieren und diese in der Paketdokumentation angeben. Die Versionsnummer sollte dem gängigen Format der semantischen Versionierung MAJOR.MINOR.PATCH folgen: MAJOR steht für wesentliche Änderungen am Projekt, MINOR für neue Funktionen und PATCH für Fehlerbehebungen oder Leistungsverbesserungen. 

So fügen Sie eine Version in der Konfigurationsdatei hinzu:

version = "1.0.0"

Damit wird die Version Ihres Projekts auf 1.0.0 festgelegt. Bei neuen Projektversionen können Sie die Versionsnummer entsprechend aktualisieren.

Ihr Paket testen

Sie können Ihr Python-Paket auf verschiedene Arten testen. Bei kleineren Projekten reichen manuelle Tests manchmal aus. Dennoch empfiehlt es sich, weitere automatisierte Tests einzurichten, damit sichergestellt ist, dass der Code auch ohne manuelles Eingreifen bestimmte Standards erfüllt. Automatisierte Tests erhöhen das Vertrauen in die Zuverlässigkeit eines Pakets.

  • Unit-Tests:  Damit testen Sie einzelne Codeabschnitte unabhängig voneinander. Verwenden Sie dazu ein Test-Framework wie `robot`, `pytest`, `testify` oder `nose`.

  • Integrationstests:   Testen Sie, wie verschiedene Teile des Pakets zusammenarbeiten, indem Sie Testumgebungen einrichten und den Code ausführen. Für Integrationstests können Sie ein Paket wie `tox` verwenden.

  • Manuelle Tests: Führen Sie den Code aus und überprüfen Sie, ob die erwarteten Ergebnisse erzielt werden. Für manuelle Tests können Sie jeden beliebigen Python-Client verwenden.

Sie können alle diese Tests im zuvor in diesem Tutorial beschriebenen Ordner tests ablegen. Bei komplexen Projekten sind in der Regel auch Analysen, Transparenzberichte und Testabdeckungsberichte erforderlich. Dafür können Sie Pakete wie coverage.py und `pytest-cov` verwenden.

Ressourcendateien zu Ihrem Paket hinzufügen

Um Dateien ohne Quellcode wie Datendateien, Binärdateien, Handbücher und Konfigurationsdateien in Ihr Python-Paket aufzunehmen, können Sie eine Ressourcendatei namens MANIFEST.in erstellen. Mit Regeln in dieser Datei legen Sie fest, welche Dateien beim Erstellen des Pakets ein- oder ausgeschlossen werden sollen. 

Mit folgendem Code werden beispielsweise alle Dateien mit der Endung .toml im Verzeichnis src/mileConverter aufgenommen:

# MANIFEST.in
include src/mileConverter/*.toml

Sie können für diesen Zweck auch eine separate Datei mit der Endung .toml angeben.

Ihr Paket lizenzieren

Um eine Lizenz in Ihr Python-Paket aufzunehmen und es anderen zur Nutzung bereitzustellen, erstellen Sie im Paketverzeichnis eine Datei namens LICENSE und wählen Sie eine vorhandene Lizenz aus, zum Beispiel eine von choosealicense.com. 

In der Datei pyproject.toml müssen Sie den Dateinamen LICENSE in der Lizenzvariable angeben, damit die Lizenz auf der PyPI-Seite angezeigt wird. Das haben Sie bereits getan, als Sie mit der Konfiguration der Datei pyproject.toml für das Paket begonnen haben.

Zu den beliebtesten Open-Source-Lizenzen zählen die MIT License, die Apache License und die GNU General Public License (GPL). Sie können jedoch aus vielen weiteren Lizenzen wählen.

Paket lokal installieren

Sie haben nun alle erforderlichen Dateien erstellt und alle nötigen Konfigurationen für Ihr Paket vorgenommen. Bevor Sie Ihr Paket auf PyPI veröffentlichen, sollten Sie es lokal installieren und mit pip auf Fehler prüfen. Geben Sie dazu das Tag -e oder - editable an, das signalisiert, dass Sie versuchen, das Paket lokal zu installieren, wie im folgenden Befehl gezeigt:

$ pip install -e .

Nachdem Sie Ihr Paket lokal installiert haben, können Sie es auf PyPI veröffentlichen.

Paket auf PyPI veröffentlichen

Um Ihr Paket zu veröffentlichen, müssen Sie es zunächst erstellen.

Paket erstellen

Verwenden Sie das build-Paket, um eine Wheel-Datei für Ihr Python-Paket zu generieren. Führen Sie zum Installieren des Build-Frontends den folgenden Befehl aus:

$ pip install build

Wechseln Sie anschließend in das Verzeichnis mit Ihrer Datei pyproject.toml und führen Sie den folgenden Befehl aus:

$ python -m build

Dadurch wird am selben Speicherort wie die .toml-Datei ein Ordner dist/ mit zwei Dateien erstellt:

dist/
├── milesConverter-1.0.0-py3-none-any.whl
└── milesConverter-1.0.0.tar.gz

Die Datei `.whl` ist eine Build-Distribution, und die Datei tar.gz ist eine Source-Distribution. Diese Dateien können später auf PyPI hochgeladen werden, doch zunächst müssen Sie sie testen.

Paket testen

Um Ihr Paket zu testen, müssen Sie `twine` installieren – eine Bibliothek, mit der Sie Ihr Paket auch auf PyPI hochladen können. Führen Sie dazu den folgenden Befehl aus:

$ pip install twine

Sobald twine installiert ist, können Sie mit diesem Befehl prüfen, ob die Beschreibung Ihres Pakets auf PyPI korrekt dargestellt wird:

$ twine check dist/*

Die Ausgabe des vorherigen Befehls sieht in etwa so aus:

(base) gouravbais@Gouravs-Air Python_Package % twine check dist/*
Checking dist/milesConverter-1.0.0-py3-none-any.whl: PASSED
Checking dist/milesConverter-1.1.0-py3-none-any.whl: PASSED
Checking dist/milesConverter-1.0.0.tar.gz: PASSED
Checking dist/milesConverter-1.1.0.tar.gz: PASSED

Wenn alle Tests erfolgreich sind, ist Ihr Paket bereit.

Paket auf den TestPyPI-Dienst hochladen

Bevor Sie Ihr Paket öffentlich verfügbar machen, sollten Sie es mit dem TestPyPI-Dienst testen und überprüfen. Dazu können Sie es auf TestPyPI hochladen. Erstellen Sie zunächst ein Konto auf der PyPI-Website. Anschließend können Sie Ihr Paket mit twine hochladen, indem Sie den folgenden Befehl ausführen. Dafür benötigen Sie Ihren PyPI-Benutzernamen und Ihr Passwort:

$ twine upload -r testpypi dist/*

Nach erfolgreicher Ausführung des Befehls erhalten Sie eine URL, unter der Sie die Ergebnisse aufrufen können. Außerdem können Sie auf der TestPyPI-Website nach Ihrem Paket suchen. Um Ihr Paket vom Dienst TestPyPI herunterzuladen, verwenden Sie den folgenden Befehl:

$ pip install -i https://test.pypi.org/simple/ milesConverter==1.0.0

Nach dem Herunterladen können Sie Ihr Paket testen und sicherstellen, dass es ordnungsgemäß funktioniert.

Paket auf den regulären PyPI-Dienst hochladen

Das Hochladen auf den regulären PyPI-Dienst funktioniert ähnlich wie das Hochladen auf TestPyPI. Nachdem Sie Ihr Paket im vorherigen Schritt überprüft haben, können Sie es auf den regulären PyPI-Dienst hochladen. Verwenden Sie dazu wieder das Tool twine, um Ihre Paketdateien auf PyPI hochzuladen.

Führen Sie in Ihrem Terminal den folgenden Befehl aus und ersetzen Sie dist/* durch den Pfad zu Ihren Paketdateien:

twine upload dist/*

Nach dem Hochladen des Pakets können Sie die Website aufrufen und danach suchen.

Paket installieren

Nun müssen Sie Ihr Paket testen. Sie können es mit dem folgenden Befehl herunterladen:

$ pip install milesConverter

Nach der Installation des Pakets können Sie es in einem beliebigen Python-Editor oder einer Python-Laufzeitumgebung testen:

from milesConverter import km2miles
a = km2miles.km2miles(16)
print(a)

Die Ausgabe sollte wie folgt aussehen:

9.941936

Ihr Paket wurde nun auf PyPI hochgeladen und ist über pip in jeder Python-Umgebung verfügbar.

Paket in einem privaten Python-Index veröffentlichen

Sie haben bereits erfahren, warum manche Organisationen ihre Pakete über einen privaten Python-Index verteilen möchten. Außerdem ist es einfach, Ihr Python-Paket in einem privaten Index zu veröffentlichen. Folgen Sie dazu einfach diesen Schritten:

  • Richten Sie für Ihr Paket eine Verzeichnisstruktur mit .whl- oder .tar.gz-Dateien für die Verteilung ein.

  • Konfigurieren Sie Ihren Webserver so, dass er das Stammverzeichnis Ihres Pakets bereitstellt und die automatische Indexierung aktiviert ist.

  • Laden Sie Ihr Paket mit twine in den privaten Index hoch. Verwenden Sie dazu die URL Ihres privaten Webservers: $ twine upload - repository-url your_web_server milesConverter/*.

  • Um das Paket aus dem privaten Index zu installieren, verwenden Sie den pip-Befehl mit der URL Ihres Webservers ($ pip install - extra-index-url your_web_server milesConverter).

Nach Abschluss dieser Schritte steht Ihr Paket Ihnen und Ihrem Team auf Ihrem privaten Webserver zur Verfügung.

Sicherheits-Best Practices für die Erstellung von Python-Paketen

Nachdem Sie nun wissen, wie Sie Ihr Paket veröffentlichen, sollten Sie vor der Veröffentlichung einige Best Practices beachten, damit Ihr Paket sicher ist und korrekt funktioniert.

Achten Sie auf Ihre Abhängigkeiten

Bevor Sie eine Drittanbieter-Abhängigkeit in Ihrem Projekt verwenden, sollten Sie die Dokumentation prüfen und nachsehen, ob Sicherheits- oder Schwachstellenprüfungen vorgesehen sind. Viele Bibliotheken enthalten in ihrer Dokumentation einen eigenen Abschnitt zu bekannten Sicherheitsproblemen und deren Behebung. Eine solche Dokumentation gibt Ihnen mehr Sicherheit bei der Auswahl eines Drittanbieter-Pakets.

Gibt es keine Dokumentation, kann Ihnen ein Tool wie Snyk dabei helfen, Schwachstellen zu identifizieren in Drittanbieter-Bibliotheken, deren Verwendung Sie erwägen.

Gehen Sie mit Zeichenfolgen und rohem SQL vorsichtig um

Beim Arbeiten mit Zeichenfolgen in Python ist besondere Vorsicht geboten, insbesondere wenn Sie rohes SQL in Ihrem Code verwenden. Ein unsachgemäßer Umgang kann Sie Zeichenfolgen- oder SQL-Injection-Angriffen aussetzen. Angreifer können schädlichen Code in eine Zeichenfolge oder – wahrscheinlicher – eine SQL-Abfrage einschleusen. Das kann dazu führen, dass unerwartete und beliebige SQL-Befehle in Ihrer Datenbank ausgeführt werden.

Solche Angriffe lassen sich verhindern, indem Sie sorgfältig darauf achten, wie Sie Zeichenfolgen formatieren – insbesondere, wenn Sie Benutzereingaben verarbeiten. Verwenden Sie zum Formatieren von Zeichenfolgen am besten die Standardbibliotheken und die Funktionalität von f-string.

Verwenden Sie bei rohem SQL parametrisierte Abfragen, anstatt Benutzereingaben direkt an die SQL-Zeichenfolge anzuhängen. So lassen sich SQL-Injection-Angriffe verhindern, da Benutzereingaben korrekt maskiert, in Anführungszeichen gesetzt und überprüft werden.

Deserialisieren Sie mit Vorsicht und sicher

Das Python-Modul pickle ist nicht besonders sicher und kann für Angriffe wie die pickle bomb anfällig sein. Um die Sicherheit Ihres Pakets zu gewährleisten, können Sie eine alternative Bibliothek zur Deserialisierung in Betracht ziehen, etwa `dill`, einen sicheren Wrapper für pickle.

Eine Schwachstelle von pickle besteht darin, dass bei der Deserialisierung beliebiger Code ausgeführt werden kann. In diesem Fall kann ein Angreifer eine schädliche Pickle-Datei einschleusen, die Code enthält, der beim Deserialisieren der Datei ausgeführt wird. dill löst dieses Problem, indem Sie festlegen können, welche Module oder Funktionen entpickelt werden dürfen. So wird die Ausführung beliebigen Codes während der Deserialisierung verhindert, wodurch dill sicherer ist als pickle.

Vergessen Sie nicht, Secrets zu entfernen

Bei der Arbeit mit sensiblen Daten ist es äußerst wichtig, Secrets sicher zu speichern. Werden sie nicht sicher aufbewahrt, können Angreifer darauf zugreifen und sich damit unbefugten Zugang zu Ihren Systemen und Daten verschaffen. Dem können Sie vorbeugen, indem Sie Secrets mithilfe einer Secret-Management-Bibliothek wie keyring, passlib, pycryptodome oder pycrypto verschlüsselt speichern.

Außerdem sollten Sie Ihre Secrets regelmäßig rotieren. So verringern Sie das Risiko einer Kompromittierung. Einige der genannten Tools bieten diese Funktion, ebenso wie andere Tools, etwa HashiCorp Vault.

Scannen Sie Ihren Code regelmäßig mit einem Tool auf Schwachstellen

Wie Sie gesehen haben, ist es wichtig, sich der verschiedenen Bedrohungen bewusst zu sein, die sich auf Ihr Python-Projekt auswirken können – insbesondere im Bereich Abhängigkeitsverwaltung, Zeichenfolgenformatierung, rohe SQL-Abfragen und Deserialisierung. Sie könnten versuchen, all diese Probleme selbst zu beheben, doch das ist nicht empfehlenswert. Verwenden Sie besser ein Tool, das Schwachstellen in Ihrem Projekt erkennt und behebt.

Ein Tool wie Snyk erleichtert Ihnen die Arbeit, indem es Ihren Code regelmäßig auf Schwachstellen scannt. Mit Snyk können Sie potenzielle Probleme in Ihrem Python-Projekt identifizieren und beheben. So schützen Sie nicht nur Ihr Projekt, sondern verringern auch die Zahl der Fehler und Funktionsprobleme in Ihrer Anwendung.

Fazit

In diesem Tutorial haben Sie erfahren, wie Sie ein Python-Paket erstellen. Außerdem haben Sie gelernt, warum sich damit Ihr Code sinnvoll organisieren lässt und wie Sie ihn dadurch wiederverwendbar und nachhaltig gestalten können.

In diesem Tutorial haben Sie außerdem erfahren, warum es äußerst wichtig ist, sich der verschiedenen Bedrohungen und Schwachstellen bewusst zu sein, die Ihrem Projekt schaden können. Sie haben gelernt, wie Sie einige dieser Schwachstellen und Bedrohungen selbst beheben können, indem Sie mehr Code schreiben. Doch nicht alle Organisationen oder Teams haben die Kapazität dazu – und selbst wenn sie sie haben, sollten sie es nicht tun. Besser ist ein ausgereiftes Standardprodukt, das sich fortlaufend um Schwachstellen und Bedrohungen kümmert und Ihnen die Arbeit erleichtert.

Ein Produkt wie Snykr kann Ihnen helfen, diese Bedrohungen einzudämmen, indem es Ihren Code gründlich scannt, Schwachstellen erkennt und einige dieser Probleme automatisch behebt.

Sichern Sie Ihre Python-Apps ab

Finden und beheben Sie Python-Schwachstellen – kostenlos mit Snyk.

Keine Kreditkarte erforderlich.

Oder registrieren Sie sich mit Azure AD Docker ID Bitbucket

Mit der Nutzung von Snyk erklären Sie sich mit unseren Richtlinien einverstanden, einschließlich unserer Nutzungsbedingungen und Datenschutzerklärung.

Weiterlesen

illustration hero ai
Blog

PHP behebt zwei kritische unauthentifizierte RCE-Schwachstellen (CVE-2026-109618, CVE-2026-109619): Jetzt aktualisieren

Zwei kritische Sicherheitslücken im Request-Lebenszyklus von PHP können unauthentifizierte Remote Code Execution ermöglichen. Aktualisieren Sie auf eine korrigierte Version oder installieren Sie für ältere Versionen einen Backport des Anbieters.

blog feature ai lilac
Blog

Mit agentischer Behebung Ihren Schwachstellen-Backlog in Pull Requests verwandeln

Der Evo Remediation Agent ist jetzt in der öffentlichen Vorschau verfügbar und erweitert Evo Agentic AppSec um die automatisierte Auflösung von Abhängigkeiten. AppSec-Teams können jetzt kontinuierliche Behebungskampagnen durchführen

AI Background min crop
Blog

KI ruft alle Risiken auf den Plan, die Sie akzeptiert haben: Sieben Erkenntnisse aus dem AI Security Panel: Unfiltered

KI macht Angriffe günstiger und schneller und legt Risiken offen, die Unternehmen bereits tragen. Vier Sicherheitsverantwortliche erklären, warum Abwehr in Maschinengeschwindigkeit und schnellere Behebung jetzt unverzichtbar sind.