Anfängerhandbuch zum Erstellen Ihrer Python-Bibliothek
Bild vom Autor | Canva

Als Programmierer verlassen wir uns oft auf verschiedene externe Bibliotheken, um verschiedene Probleme zu lösen. Diese Bibliotheken werden von erfahrenen Entwicklern erstellt und bieten Lösungen, die uns Zeit und Mühe sparen. Aber haben Sie jemals gedacht, „Kann ich auch meine eigenen benutzerdefinierten Bibliotheken erstellen?“ Die Antwort ist ja! Dieser Artikel erläutert die notwendigen Schritte, die Ihnen dabei helfen, dies zu erreichen, egal ob Sie ein professioneller Entwickler sind oder gerade erst anfangen. Vom Schreiben und Strukturieren Ihres Codes bis hin zur Dokumentation und Veröffentlichung deckt dieser Leitfaden alles ab.

Schritt-für-Schritt-Anleitung zum Erstellen einer Bibliothek

Schritt 1: Initialisieren Sie Ihr Projekt

Beginnen Sie mit der Erstellung eines Stammverzeichnisses für Ihr Projekt.

Schritt 2: Erstellen Sie ein Verzeichnis für Ihr Paket

Der nächste Schritt besteht darin, innerhalb des Verzeichnisses Ihres Projekts ein Verzeichnis für Ihr Paket zu erstellen.

multiples_library/
└──multiples/

Schritt 3: Hinzufügen __init.py__

Fügen Sie nun die __init.py__ im Verzeichnis Ihres Pakets. Diese Datei ist der primäre Indikator für Python, dass das Verzeichnis, in dem sie sich befindet, ein Paket ist. Sie enthält Initialisierungscode (sofern vorhanden) und wird automatisch ausgeführt, wenn ein Paket oder eines seiner Module importiert wird.

multiples_library/
└── multiples/
    └──__init__.py

Schritt 4: Module hinzufügen

Jetzt müssen Sie dem Verzeichnis des Pakets Module hinzufügen. Diese Module bestehen normalerweise aus Klassen und Funktionen. Es empfiehlt sich, jedem Modul einen aussagekräftigen Namen zu geben, der seinen Zweck beschreibt.

multiples_library/
│
└── multiples/
    ├── __init__.py
    ├── is_multiple_of_two.py
    └── is_multiple_of_five.py

Schritt 5: In die Module schreiben

In diesem Schritt definieren Sie die Funktionalität jedes Moduls. In meinem Fall beispielsweise:

Modul: multiple_of_two.py

def is_multiple_of_two(quantity):
    """ Verify if a quantity is a a number of of two. """
    return quantity % 2 == 0

Modul: multiple_of_five.py

def is_multiple_of_five(quantity):
    """ Verify if a quantity is a a number of of 5. """
    return quantity % 5 == 0

Schritt 6: setup.py hinzufügen

Der nächste Schritt besteht darin, eine weitere Datei namens setup.py zum Verzeichnis Ihres Pakets hinzuzufügen.

multiples_library/
│
├── multiples/
│   ├── __init__.py
│   ├── is_multiple_of_two.py
│   └── is_multiple_of_five.py
│
└──setup.py

Diese Datei enthält Metadaten zu Ihrem Paket, wie etwa Title, Abhängigkeiten, Autor, Model, Beschreibung und mehr. Sie definiert auch, welche Module enthalten sein sollen, und enthält Anweisungen zum Erstellen und Installieren des Pakets.

from setuptools import setup, find_packages

setup(
    identify="multiples_library",  # Substitute together with your package deal’s identify
    model='0.1.0',
    packages=find_packages(),
    install_requires=(
        # Checklist your dependencies right here
    ),
    creator="Your identify",  
    author_email="Your e-mail",
    description='A library for checking multiples of two and 5.',
    classifiers=(
        'Programming Language :: Python :: 3',
        'License :: OSI Authorised :: MIT License',  # License sort
        'Working System :: OS Unbiased',
    ),
    python_requires=">=3.6",

)

Schritt 7: Checks und andere Dateien hinzufügen (non-obligatory)

Dieser Schritt ist nicht notwendig, aber eine gute Vorgehensweise, wenn Sie eine fehlerfreie und professionelle Bibliothek erstellen möchten. In diesem Schritt ist die Projektstruktur endgültig und sieht ungefähr so ​​aus:

multiples_library/
│
├── multiples/
│   ├── __init__.py
│   ├── is_multiple_of_two.py
│   └── is_multiple_of_five.py
│
│
├── exams/ 
│   ├── __init__.py   
│   ├── test_is_multiple_of_two.py
│   └── test_is_multiple_of_five.py
│
├── docs/
│
├── LICENSE.txt
├── CHANGES.txt
├── README.md
├── setup.py
└── necessities.txt

Nun erkläre ich Ihnen, welchen Zweck die optionalen Dateien und Ordner haben, die im Stammverzeichnis aufgeführt sind:

  • Checks/: Enthält Testfälle für Ihre Bibliothek, um sicherzustellen, dass sie sich wie erwartet verhält.
  • Dokumente/: Enthält Dokumentation für Ihre Bibliothek.
  • LICENSE.txt: Enthält die Lizenzbedingungen, unter denen andere Ihren Code verwenden können.
  • ÄNDERUNGEN.txt: Protokolliert Änderungen an der Bibliothek.
  • README.md: Enthält die Beschreibung Ihres Pakets und Installationsanweisungen.
  • necessities.txt: Listet die externen Abhängigkeiten auf, die Ihre Bibliothek benötigt. Sie können diese Pakete mit einem einzigen Befehl installieren (pip set up -r necessities.txt).

Diese Beschreibungen sind ziemlich unkompliziert und Sie werden den Zweck der optionalen Dateien und Ordner in kürzester Zeit verstehen. Ich möchte jedoch ein wenig auf das optionale Testverzeichnis eingehen, um seine Verwendung zu verdeutlichen.

exams/ Verzeichnis

Es ist wichtig zu beachten, dass Sie ein Testverzeichnis innerhalb Ihres Stammverzeichnisses hinzufügen können, d. h. multiples_libraryoder im Verzeichnis Ihres Pakets, d. h. multiples. Die Entscheidung liegt bei Ihnen. Ich bevorzuge es jedoch, es auf der obersten Ebene im Stammverzeichnis zu belassen, da ich denke, dass dies eine bessere Möglichkeit ist, Ihren Code zu modularisieren.

Mehrere Bibliotheken helfen Ihnen beim Schreiben von Testfällen. Ich werde die bekannteste und meine persönliche Lieblingsbibliothek „unittest“ verwenden.

Unit-Check/s für is_multiple_of_two

Der/die Testfall(e) für dieses Modul ist/sind enthalten im test_is_multiple_of_two.py Datei.

import unittest
import sys
import os

sys.path.insert(0, os.path.abspath(os.path.be a part of(os.path.dirname(__file__), '..')))

from multiples.is_multiple_of_two import is_multiple_of_two


class TestIsMultipleOfTwo(unittest.TestCase):

	def test_is_multiple_of_two(self):
		self.assertTrue(is_multiple_of_two(4))
if __name__ == '__main__': 
      unittest.predominant()

Unit-Check/s für is_multiple_of_five

Der/die Testfall(e) für dieses Modul ist/sind enthalten im test_is_multiple_of_five.py Datei.

import unittest
import sys
import os
sys.path.insert(0, os.path.abspath(os.path.be a part of(os.path.dirname(__file__), '..')))

from multiples.is_multiple_of_five import is_multiple_of_five


class TestIsMultipleOfFive(unittest.TestCase):

	def test_is_multiple_of_five(self):
		self.assertTrue(is_multiple_of_five(75)) 

if __name__ == '__main__':
      unittest.predominant()

Die oben aufgeführten Komponententests sind ziemlich unkompliziert, ich werde jedoch zur weiteren Verdeutlichung zwei Funktionen erläutern.

  • self.assertTrue(expression) prüft, ob der Ausdruck „Wahr“ ergibt. Der Check ist nur erfolgreich, wenn das Ergebnis des Ausdrucks „Wahr“ ist.
  • unittest.predominant() Funktion wird aufgerufen, um alle in der Datei definierten Testfälle auszuführen.

Schritt 8: Verteilen Sie Ihr Paket mit PyPI

Um Ihre Bibliothek für andere leicht zugänglich zu machen, können Sie sie auf PyPI hochladen. Befolgen Sie diese Schritte, um Ihr Paket zu verteilen:

  • Erstellen Sie ein Konto auf PyPI und aktivieren Sie die Zwei-Faktor-Authentifizierung.
  • Erstellen Sie ein API-Token indem Sie einen Token-Namen vergeben und den Geltungsbereich auf „Gesamtes Konto“ auswählen. Kopieren Sie ihn dann sorgfältig, da er nur einmal vorkommt.
  • Jetzt müssen Sie eine .pypirc-Datei erstellen.
    Für MacOS/Linuxöffnen Sie das Terminal und führen Sie den folgenden Befehl aus:
  • Für Home windowsöffnen Sie die Eingabeaufforderung und führen Sie den folgenden Befehl aus:

    cd %USERPROFILE%
    sort NUL > .pypirc

    Die Datei wird erstellt und befindet sich unter ~/.pypirc (bei MacOS/Linux) und unter %USERPROFILE%/.pypirc (bei Home windows).

  • Bearbeiten .pypirc Datei, indem Sie die folgende Konfiguration kopieren und einfügen:
  • (distutils)
    index-servers =
        pypi
    
    (pypi)
    username = __token__
    password = pypi-

    Ersetzen mit dem tatsächlichen API-Token, das Sie von PyPI generiert haben. Vergessen Sie nicht, das Präfix pypi- einzuschließen.

  • Stellen Sie sicher, dass Sie eine Datei „setup.py“ im Stammverzeichnis Ihres Projekts haben. Führen Sie den folgenden Befehl aus, um Verteilungsdateien zu erstellen:
  • python3 setup.py sdist bdist_wheel
    
  • Twine ist ein Device zum Hochladen von Paketen auf PyPI. Installieren Sie Twine, indem Sie den folgenden Befehl ausführen:
  • Laden Sie jetzt Ihr Paket auf PyPI hoch, indem Sie den folgenden Befehl ausführen:

Schritt 9: Installieren und Verwenden der Bibliothek

Sie können die Bibliothek mit dem folgenden Befehl installieren:

pip set up (your-package)

In meinem Fall:

pip set up multiples_library

Nun können Sie die Bibliothek wie folgt verwenden:

from multiples.is_multiple_of_five import is_multiple_of_five
from multiples.is_multiple_of_two import is_multiple_of_two

print(is_multiple_of_five(10))
# Outputs True
print(is_multiple_of_two(11))
# Outputs False

Einpacken

Kurz gesagt, das Erstellen einer Python-Bibliothek ist sehr interessant und ihre Verbreitung macht sie für andere nützlich. Ich habe versucht, alles, was Sie zum Erstellen einer Bibliothek in Python benötigen, so klar wie möglich abzudecken. Wenn Sie jedoch an irgendeinem Punkt nicht weiterkommen oder verwirrt sind, zögern Sie bitte nicht, im Kommentarbereich Fragen zu stellen.

Kanwal Mehreen Kanwal ist Ingenieurin für maschinelles Lernen und technische Autorin mit einer tiefen Leidenschaft für Datenwissenschaft und die Schnittstelle zwischen KI und Medizin. Sie ist Mitautorin des E-Books „Maximizing Productiveness with ChatGPT“. Als Google Era Scholar 2022 für APAC setzt sie sich für Vielfalt und akademische Exzellenz ein. Sie ist außerdem als Teradata Variety in Tech Scholar, Mitacs Globalink Analysis Scholar und Harvard WeCode Scholar anerkannt. Kanwal ist eine leidenschaftliche Verfechterin des Wandels und hat FEMCodes gegründet, um Frauen in MINT-Fächern zu stärken.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert