Ich entwickle eine Anwendung mit Python 3. Was ist die beste Vorgehensweise, um Bibliotheken von Drittanbietern für den Entwicklungsprozess und die Endbenutzerverteilung zu verwenden? Beachten Sie, dass ich innerhalb dieser Einschränkungen arbeite:
Es gibt keine Best Practices, aber es gibt ein paar verschiedene Tracks, denen die Leute folgen. In Bezug auf die kommerzielle Produktverteilung gibt es Folgendes:
Verwalten Sie Ihren eigenen Paketserver
In Bezug auf Ihren Entwicklungsprozess ist es typisch, dass Sie Ihre Dev-Boxen entweder von einem lokalen Paketserver aktualisieren lassen. Dadurch können Sie die Abhängigkeitsliste "einfrieren" (d. H. Einfach Upstream-Updates nicht mehr erhalten), so dass sich alle auf derselben Version befinden. Du kannst zu bestimmten Zeiten updaten und die Entwickler ebenfalls updaten lassen, so dass alle im Gleichschritt bleiben.
Bei Kundeninstallationen schreiben Sie normalerweise ein Installationsskript. Sie können alle Pakete sammeln und Ihre libs sowie die anderen gleichzeitig installieren. Es kann Probleme mit dem Versuch geben, ein neues Python oder sogar eine Standardbibliothek zu installieren, da der Kunde möglicherweise bereits auf eine andere Version angewiesen ist. Normalerweise können Sie in einer Sandbox installieren, um Ihre Pakete von den Systempaketen zu trennen. Dies ist eher ein Problem unter Linux als Windows.
Toolchain
Die andere Option besteht darin, für jedes unterstützte Betriebssystem eine Toolchain zu erstellen. Eine Toolchain besteht aus allen Abhängigkeiten (bis zu, aber nicht inklusive Basis-OS-Bibliotheken wie glibc
). Diese Toolchain wird für die Entwickler UND Kunden zusammengelegt und verteilt. Best Practice für eine Toolchain ist:
.../bin
-Verzeichnissen, um eine versehentliche Verwendung zu verhindern. (dh auf Linux können Sie unter .../libexec
installieren. /opt
wird auch verwendet, obwohl ich es persönlich verabscheue.) lib/python/site-packages
, damit du PYTHONPATH nicht benutzen musst. .py
für die ausführbaren Dateien, damit das Installationsscript sie entsprechend verschieben kann. Sie könnten setuptools verwenden, um Ei- Dateien für Ihre Bibliotheken zu erstellen, vorausgesetzt, sie sind nicht bereits in Ei- Form verfügbar. Sie könnten dann die Eier zusammen mit Ihrer Software bündeln, die sie entweder installieren oder sicherstellen müssten, dass sie sich auf dem Importpfad befinden.
Das hat einige Schwierigkeiten, d. h. wenn Ihre Bibliotheken C-Erweiterungen haben, dann werden Ihre Eizellen plattformspezifisch, aber nach meiner Erfahrung ist dies das am weitesten verbreitete Mittel, Dinge in Python zu bündeln.
Ich muss sagen, dass dies eine der Schwächen von Python bleibt. Das Ökosystem von Drittanbietern richtet sich sicherlich eher an Entwickler als an Endnutzer.
Angenommen, die Bibliotheken von Drittanbietern sind in pypi verfügbar, verwenden Sie distutils und geben Sie in setup.py die erforderlichen Versionen an.
Tags und Links dependencies python-3.x software-distribution