Freunde, guten Abend! Wir haben tolle Neuigkeiten, offene Rekrutierung in einer neuen Gruppe im Kurs
"Python Developer" . Die Gruppe beginnt bereits Anfang Juli und gemäß einer etablierten Tradition teilen wir derzeit eine nützliche Übersetzung, die für Studenten dieses Kurses vorbereitet wurde.

Wenn Sie Python zum ersten Mal lernen, erklärt Ihnen jemand, dass Sie Ihren
Quellordner zur Umgebungsvariablen
PYTHONPATH hinzufügen und dann Ihren Code aus anderen Verzeichnissen importieren können. Sehr oft vergisst der Erklärer zu sagen, dass dies in den meisten Fällen eine schlechte Idee ist. Einige Leute finden das im Internet heraus, andere verstehen es einfach aus erster Hand. Aber zu viele Leute (insbesondere unerfahrene Programmierer) denken, dass es keine anderen Alternativen geben kann.
Dieser Artikel richtet sich hauptsächlich an sie, denn selbst wenn Sie wissen, dass es eine Alternative gibt, ist es nicht immer einfach, sie zu akzeptieren und zu verwenden. Python-Tools sind verwirrend, da sie eine Menge Software sind, die auf einer anderen basiert, mit vielen Überschneidungen und Problemen, die sich daraus ergeben. Es ist nicht leicht zu verstehen, wie diese Tools in Ihrem Projekt richtig verwendet werden.
Aus diesem Grund habe ich beschlossen, diesen Artikel zu schreiben und die beliebtesten Tools darin zu betrachten, um herauszufinden, wann und wo sie verwendet werden und welche Aufgaben sie lösen. Ich werde versuchen, an den Fingern zu erklären, wie man jedes dieser Werkzeuge benutzt. Wenn sich das Tool auf dieser Liste befindet, müssen Sie als Pythonist zumindest über seine Existenz Bescheid wissen. Ich werde nur auf die Tools eingehen, die auf jedes Projekt oder jeden Workflow angewendet werden können, und Sie sollten sich beim Starten eines neuen Projekts daran erinnern. Dies bedeutet jedoch nicht, dass Sie alle in jedem Ihrer Projekte vorgestellten Tools verwenden sollten. Es ist nicht erforderlich, das Projekt mit Tools zu überladen. In einigen Fällen kann dies die Unterstützung erschweren.
Grundlegende Werkzeuge
Setuptools
Setuptools ist die Standardmethode zum Erstellen von Paketen in Python. Er arbeitet überall und macht seinen Job gut.
Warum : Erstellen Sie Ei-, Zip- oder Wheel-Dateien aus dem Quellcode, definieren Sie Metadaten für Ihr Projekt, arbeiten Sie strukturiert und standardisiert am Code.
Bei Verwendung : Immer, wenn Sie Code schreiben, der auf dem Computer eines anderen ausgeführt werden soll.
Alternativen : Poesie, Flit
virtualenv
Virtualenv ist ein Manager für virtuelle Umgebungen. Solche Sandboxen sind eigenständige Python mit einem bestimmten Satz vorinstallierter Pakete. Die Verwendung von virtualenv bedeutet, dass Sie standardmäßig keine Pakete auf dem Python-System installieren müssen.
Warum : Trennung von Abhängigkeiten, Unterstützung für verschiedene Versionen von Python durch ein System, einfache Verlagerung von Abhängigkeiten.
Bei Verwendung : Sie müssen Code schreiben, und dafür benötigen Sie eine Python-Version, die sich von Ihrer Standard-Python-Systemversion unterscheidet.
Alternativen : Docker oder ähnliches.
Pip
Pip ist der am häufigsten verwendete Paketmanager in Python. Sie können lokale oder Remote-Pakete in Ihrer virtuellen Umgebung oder Ihrem Python-System installieren.
Für was : Installieren und Entfernen von Paketen, Verfolgen der Versionen der von Ihnen verwendeten Pakete.
Bei Verwendung : Immer.
Alternativen : Poesie, Conda
Paketerstellung und -verteilung
Für einen genaueren Blick hat python.org eine separate Seite: package.python.org
distutils
distutils ist der Vorläufer der Setuptools. Letzterer nutzt aktiv die distutils-Funktionalität, daher ist es häufig erforderlich, mit diesem Tool zu interagieren. Distutils ist nicht genau das Werkzeug, das Sie in Ihrem Arsenal haben sollten, aber Sie sollten wissen, wie es in das Gesamtbild passt.
Pypi
Pypi oder Python Package Index ist ein großes Repository, das alle Ihre bevorzugten Python-Module enthält. Zum Beispiel nimmt derselbe Pip von dort Paket-Builds.
Warum : Um Ihren Code zu veröffentlichen.
Bei Verwendung : Wenn es ein Paket gibt, das Sie der Community anzeigen möchten.
Pypiserver
Pypiserver ist eine der Implementierungen der von Pypi verwendeten Paketindex-API. Sie können beispielsweise ein eigenes Repository für Ihr gesamtes Unternehmen erstellen und Pakete veröffentlichen, ohne öffentliche Veröffentlichungen vorzunehmen.
Warum : Erstellen Sie Ihre eigenen Repositorys innerhalb der Organisation.
Bei Verwendung : Wenn Ihr Code keine Werbung benötigt, aber die volle Kontrolle darüber erforderlich ist.
Alternativen : Lager (von Pypi verwendet), Djangopypi
Poesie
Poetry ist ein alternatives Paketverwaltungssystem, das Setuptools, Pip und einige andere auf ihrer Basis basierende Tools ersetzt. Dies ist ein Versuch, die Funktionsweise des Paketsystems in Python vollständig neu zu definieren. Bis heute hat die Poesie viele positive Kritiken, ist aber nicht das häufigste Werkzeug.
Warum : Verarbeitung und Verteilung von Paketen, Verwalten von Abhängigkeiten, Verhindern von Problemen beim Auflösen von Abhängigkeiten.
Verwendungszweck : Wenn Sie ein neues Projekt planen und keine Angst haben, hochspezialisierte Tools zu verwenden.
Alternativen : Pipenv
Pipenv
Pipenv ist wie Poetry ein Tool zum Strukturieren von Abhängigkeiten und zum vernünftigeren Konfigurieren von Python-Projekten. Mit Pipfile werden die Abhängigkeiten Ihres Projekts verwaltet und Konsistenz und Benutzerfreundlichkeit sichergestellt.
Warum : Verarbeitung und Verteilung von Paketen, Abhängigkeitsmanagement.
Bei Verwendung : Sie benötigen ein Tool wie Poetry, das weniger Fragen verursacht.
Alternativen : Poesie.
Die Dokumentation
Sphinx
Sphinx ist ein Tool zum Erstellen von Dokumentation. Es wurde ursprünglich für die Python-Dokumentation erstellt, ist jedoch zu einem gängigen Tool geworden. Dies ist die häufigste Option für Python-Projekte.
Warum : Erstellen Sie PDF- oder HTML-Dokumente mit einer Auszeichnungssprache aus reStructuredText-Quellen.
Bei Verwendung : Wenn für Ihr Projekt, Ihre API oder Ihren Code eine externe Dokumentation erforderlich ist.
Alternativen : Docutils, Doxygen
autodoc
autodoc ist eine grundlegende Erweiterung für Sphinx, mit der Sie reStructuredText-Dateien aus Python-Quellcode mit Signaturen für jede Klasse, Funktion, jedes Modul usw. erstellen können.
Warum : Dokumentieren Sie Ihren Code oder Ihre API.
Bei Verwendung : Tatsächlich jedes Mal, wenn Sie Sphinx verwenden.
Alternativen : Autosummary
Testen
py.test
py.test - ist meiner Meinung nach das beste Paket zum Testen in Python. Es hat viele Funktionen, obwohl nicht alle ordnungsgemäß geöffnet sind. Daher wird es einige Zeit dauern, nach allen Möglichkeiten zu suchen, die py.test bietet.
Warum : Testen Sie Ihren Code.
Bei Verwendung : Immer wenn Sie zu faul sind, um manuell zu testen.
Alternativen : unittest, Nase
Hypothese
Die Hypothese ist ein Werkzeug zum Testen einzelner Eigenschaften. Kurz gesagt, es werden zufällige Testskripte gemäß Ihren Spezifikationen generiert, bis ein Szenario gefunden wird, in dem der Test fehlschlägt. Nehmen Sie sich etwas Zeit, um die Prinzipien zu lernen, bevor Sie dieses Tool verwenden.
Warum : Codetests, insbesondere Datenverarbeitung.
Verwendungszweck : Wenn Sie nicht triviale Logik mit einer Vielzahl von Eingabewerten (Zahlen, Zeichenfolgen, strukturierte Daten) testen müssen.
tox
tox ist ein virtueller Umgebungsmanager zum Testen. Dies bedeutet, dass Sie es so konfigurieren können, dass Tests in sauberen, anpassbaren virtuellen Umgebungen ausgeführt werden, um sicherzustellen, dass Ihr Code unter verschiedenen Bedingungen funktioniert.
Warum : für Code, der unter verschiedenen Bedingungen und in verschiedenen Umgebungen ausgeführt werden soll. Auch nützlich für CI.
Verwendungszweck : Wenn Ihr Code von verschiedenen Python-Versionen unterstützt werden soll, führen Sie ihn in verschiedenen Umgebungen und auf verschiedenen Betriebssystemen aus.
Alternativen : Bash-Scrips, CI-Pipelines
Andere Werkzeuge
pyenv
pyenv ist der Python-Versionsmanager. Ziel ist es, den lokalen Workflow von Entwicklern bei der Arbeit mit mehreren Versionen zu vereinfachen.
Warum : Starten Sie verschiedene Projekte mit verschiedenen Versionen von Python.
Bei Verwendung : Sie müssen mit globalen Versionen von Python arbeiten und haben viele davon.
Alternativen : manuelle Verwaltung, Virtualenv, Poesie, Pipenv
PyScaffold
PyScaffold ist ein Tool zum standardisierten Initialisieren der Projektstruktur und zum Bereitstellen einiger der oben aufgeführten Tools, ohne sie manuell konfigurieren zu müssen. Sehr flexibel.
Warum : Zum Laden von Projekten mit mehreren Projekten mit denselben Tools und derselben Struktur arbeiten.
Bei Verwendung : immer (wenn Sie mit diesem Tool vertraut sind, es aber nicht zum ersten Mal verwenden, wenn Sie es eilig haben)
Alternativen : Python-Projekt-Vorlage, Ausstecher
flake8
flake8 ist einer der beliebtesten Linters für Python. Es werden verschiedene Skripts ausgeführt, um zu überprüfen, ob Ihr Code den Anforderungen des Python Style Guide (
PEP-8 ) entspricht.
Wofür : Überprüfen Sie Ihr Projekt auf einen guten Schreibstil.
Bei Verwendung : Jedes Mal, wenn Ihr Projekt von jemandem oder Ihnen gelesen werden sollte.
Alternativen : Pylint
Schwarz
Schwarz formatiert den Code automatisch. Dies bedeutet, dass Schwarz Ihren Code nicht nur auf Übereinstimmung mit Standards überprüft, sondern ihn unabhängig ändert, um ihn anzupassen.
Warum : automatische Code-Formatierung.
Bei Verwendung : Wenn Sie kein Problem damit haben, die manuelle Verwaltung Ihres Codes zu verweigern.
Alternativen : autopep8, yapf
Das ist alles. Warten auf deine Kommentare ;-).