26 Punkte von geniuskey 2024-07-14 | 5 Kommentare | Auf WhatsApp teilen

Modern Good Practices for Python Development

Stuart Ellis’ moderne Best Practices für Python behandeln wichtige Punkte, die bei der Python-Entwicklung berücksichtigt werden sollten. Die wichtigsten Inhalte sind folgende:

Python verwenden

  • Die im Betriebssystem integrierte Python-Version vermeiden: Die im Betriebssystem enthaltene Python-Version kann veraltet sein.
  • Python mit Tools installieren, die mehrere Versionen unterstützen: Tools wie pyenv oder mise verwenden.
  • Die aktuelle Python-Version verwenden: Für Sicherheits-Patches und Leistungsverbesserungen die neueste stabile Version nutzen.
  • pipx zum Ausführen von Entwickleranwendungen verwenden: Anwendungen über pipx in isolierten Umgebungen ausführen.
  • Projekt-Tools verwenden: PDM, Hatch, Mise, Rye werden empfohlen.

Python-Projekte entwickeln

Sprachsyntax

  • Type Hints verwenden: PEP 484, PEP 526.
  • Strings mit f-Strings formatieren: PEP 498.
  • Zeitzonenbewusste datetime-Objekte verwenden: PEP 615.

Anwendungsdesign

  • logging statt print() verwenden.
  • TOML als Konfigurationsformat verwenden: PEP 680.
  • Asynchrones I/O nur dann verwenden, wenn es wirklich nötig ist.

Bibliotheken

  • Befehlszeileneingaben mit argparse verarbeiten.
  • Datei- und Verzeichnispfade mit pathlib handhaben.
  • Das schnelle und effiziente os.scandir() statt os.listdir() verwenden: PEP 471.
  • Beim Ausführen externer Befehle subprocess verwenden: PEP 324.
  • Für Web-Clients httpx statt requests verwenden.

Projekt-Best-Practices

Weitere Details finden sich im vollständigen Artikel.
.
.

Zusammenfassung der Hacker-News-Diskussion zu Python Modern Practices

In der Hacker-News-Diskussion zu Python Modern Practices wurden Nutzermeinungen zu verschiedenen Tools und Methoden geteilt:

  1. Empfehlung für UV: Die Nutzung von UV ist schnell und einfach, und bei Problemen gibt es guten Support. by screye
  2. Erwähnung von Rye: Rye unterstützt das Pinning und Herunterladen von Python-Interpretern, eine Integration mit uv ist geplant. by rat87
  3. Betonung der Einfachheit aktueller Tools: Mit Mamba-Umgebungen und einfachem pip gibt es keine Probleme, daher besteht kein Bedarf, die Tools zu wechseln. by helsinki
  4. Vorliebe für Basis-Tools: Mit pip, venv und virtualenvwrapper lassen sich die meisten Probleme lösen. by throwadobe
  5. Verteidigung von Pipenv: Pipenv wird als vollständige Lösung genutzt, und es ist unklar, warum es nicht weiter verbreitet ist. by routerl
  6. Probleme mit Poetry: Poetry enttäuschte durch Probleme wie die fehlende Möglichkeit, Versionskennungen aus Git-Commits hinzuzufügen. by alisonatwork
  7. Conda und Mamba: Conda ist bei der Abhängigkeitsverwaltung deutlich leistungsfähiger, und Mamba ist schneller. by wanderingmind
  8. Packaging-Probleme: Die Packaging-Probleme von Python haben stark soziale Ursachen und werden wohl immer bestehen bleiben. by jampekka
  9. Vorschlag als Alternative zu Pyenv: Mise ist schneller als Pyenv und unterstützt auch Node-Projekte. by odie5533
  10. Pydantic-Modelle und Data Classes: Pydantic-Modelle bieten starke Validierungsfunktionen, sind aber langsam, während Data Classes leichtgewichtig und effizient sind. by martinky24

Weitere Details finden sich in der Hacker-News-Diskussion.

5 Kommentare

 
kaydash 2024-07-15

Es gibt offenbar keinen Inhalt zur Verschlankung von Bibliotheken.
Die Nutzung einer virtuellen env von miniconda3, das Entfernen ungenutzter Bibliotheken und die portable Bereitstellung haben in verteilten Verarbeitungssystemen wie Yarn eine bessere Leistung gewährleistet.

 
savvykang 2024-07-15

Warum sollte man pip-tools oder uv verwenden? Es gibt hier überhaupt keine Grundlage für die Behauptung, dass das modern oder besser sei.

 
savvykang 2024-07-15

Es scheint einen Grund dafür zu geben, warum Hashes in pip-Abhängigkeitsspezifizierern enthalten sein sollten: das Problem, dass sich mit dem aktuellen Verhalten von pip die Build-Version nicht angeben lässt. Ohne diesen Kontext wirken Leitfäden, die nur Anweisungen auflisten, nicht besonders überzeugend.

 
jwseo 2024-07-16

Was verwenden Sie hauptsächlich??

 
savvykang 2024-07-16

Bisher habe ich nur mit pip freeze gearbeitet, dabei aber nur Bibliotheken ausgewählt, die sowohl Windows als auch Linux unterstützen, und Probleme durch geänderte Patch-Versionen gab es bislang nicht. Trotzdem verstehe ich jetzt, da mir das Problem bekannt ist, die Notwendigkeit, würde aber den Einsatz von pip-tools oder uv erst in Betracht ziehen, wenn sie etwas ausgereifter sind.