Ich tauche in die Welt der Python-Anwendungen ein und gelangte in diesen Zustand der Verwirrung, in dem sich mein Kopf aufgrund all der Konzepte und Optionen, mit denen ich umgehen soll, dreht.
Frage:
Was muss ich erreichen? Stellen Sie mein Python-Projekt von einer auf einem Git-Server befindlichen Quelle bereit. Das Deployment Tool sollte alle Abhängigkeiten erhalten und installieren, von denen die meisten über PIP verfügbar sind und über Git geladen und installiert werden müssen. Das Endergebnis sollte via Pip installierbar sein, damit ich etwas machen kann wie:
%Vor%Kontext: Momentan versuche ich, Distutils2 dazu zu bringen, das zu tun, was ich will, aber es scheint, dass setup.py, das mit dem Befehl 'generate-setup' erstellt wurde, nicht mit Pip zusammenspielt.
Ich wollte Distutils2 verwenden, da es für alle zukunftssicher sein soll. Aber verschiedene Dokumentationen über alle Tools sind einfach nur schrecklich (genaue Informationen gemischt mit veralteten und ungenauen Informationen) auf eine Art und Weise, die einen Mann in Frage stellt, seine geistige Gesundheit.
Was soll ich tun? Bleib bei distutils und setup.py? Oder muss ich etwas wie Buildout sehen?
Könnte der freundliche Beantworter bitte auslegen, was ich mit einem bestimmten Tool tun soll (zB: den Code mit Distutils2 deployen, Abhängigkeiten mit PIP installieren, für Git-Abhängigkeiten ein Skript schreiben und alles mit XYZ zusammenkleben).
Bearbeiten: Ich verwende Distutils2 1.0a4, das mit den Dokumenten nicht kompatibel scheint.
Bearbeiten2: Die Frage neu formatiert, um klarer zu machen, worum es bei meiner Frage wirklich geht.
Edit3: Dies ist mein vierter Versuch, die Verpackungs- und Distributions-Toolchain von Python zu durchbrechen. Ich versuche nicht, andere Leute dazu zu bringen, meine Arbeit für mich zu machen, aber für einen Anfänger ist es ziemlich unmöglich zu knacken, was ein bestimmtes Werkzeug tun soll, wo es beginnt und wo ein anderes endet. Vor allem wegen der funktionalen Überlappung zwischen den Werkzeugen. Ich bin nicht im Silicon Valley, umgeben von Weisen, die mich in die Geheimnisse einweihen könnten, und die öffentlich verfügbare Dokumentation nützt nichts.
Letzte Änderung: Obwohl ich nicht wirklich daran gedacht habe, virtualenv durch Buildout zu ersetzen, wenn ich diese Frage anfange. Aber während ich recherchierte, realisierte ich etwas, das ich immer wusste, aber ich kam nicht in völliger Klarheit zu mir. Es gibt viele Möglichkeiten, Python zu paketieren und zu implementieren. Es gibt auch viele Tools, mit denen Sie die Dinge erledigen können. Obwohl es zwischen den Tools erhebliche funktionale Überschneidungen gibt, entwickelt sich die Toolchain immer weiter und bisher gibt es keine klare "Standard Best Practice". Das Rüstungsrennen der Distribution Toolchain ist immer noch in vollem Gange und es ist noch kein klarer Sieger herausgekommen. Das könnte für uns Anfänger verwirrend sein, die erwarten, dass der meiste Scheiß in Python einfach funktioniert. Was ich suchte (distutils / setuptools + pip + virtualenv in einer Buildout-Mode oder sogar halbintegriert mit Buildout) ist sicherlich toolable, aber es macht einfach keinen Sinn, nicht weil es nicht möglich ist - aber weil niemand es tut. Wenn Sie dieses Niveau der Raffinesse brauchen, dann müssen Sie sich verpflichten. Persönlich habe ich beschlossen, virtualenv (für dieses Projekt) zu verlassen und Buildout zu unterstützen.
Schauen Sie sich Aufbau an; zusammen mit einem Buildout-Plugin namens mr.developer können Sie ein Bereitstellungssystem zusammenstellen, das alles erledigt, was Sie fragen für.
Es gibt viele Beispiele und Präsentationen zu Buildout-Konfigurationen im Internet. Hier sind einige, die Ihnen den Einstieg erleichtern:
Eine einführende Präsentation über Buildout: Ссылка
Enthält ein YouTube-Video der Präsentation, damit Sie mithören können.
Ausgezeichneter Blog-Beitrag zu zur Verwendung von Buildout zur Entwicklung einer Django-Anwendung .
Enthält Details zur Interaktion zwischen buildout und setup.py.
Die Konfiguration für planet.plone.org : Ссылка
Dies baut einen Venus-RSS-Aggregator mit Konfiguration, Stil, Apache-Konfiguration und Cronjobs auf und zieht Eier nach Bedarf ein. p>
Der Plone Core-Entwicklungsaufbau: Ссылка
Komplexes Buildout, das alle für die Entwicklung des Plone-CMS erforderlichen Quellen einbezieht; Das ist ein komplexes Biest, aber es zeigt, was Sie mit mr.developer
machen können.
Es muss nicht schwierig sein: Installieren Sie Jenkins und verwenden Sie pips requirements.txt , um die Pakete zu definieren, die Ihr Projekt benötigt. Danach können Sie einen Build in Jenkins konfigurieren, um verschiedene Aufgaben auszuführen, einschließlich der Installation der erforderlichen Pakete. Es kann den Quellcode von Ihrem Repository erhalten und + das gesamte Projekt installieren.