2010-02-21 6 views
5

Ich möchte Build-Out für die Abhängigkeitsverwaltung verwenden, und ich höre verteilen ist die neue gute Möglichkeit, die Installation Ihres Projekts zu verwalten.Wie starte ich mit zc.buildout und Distribute?

Allerdings scheinen einfache Tutorials zu beginnen, dünn zu sein auf dem Boden. Das Einfachste, was ich gesehen habe, ist Jacob Kaplan-Moss Developing Django apps with zc.buildout (mein Anwendungsfall ist eine Web-Anwendung), aber das ist immer noch nicht sehr klar, was jedes Teil der Kette tut, und welche Best Practices sind.

Wie gehe ich auf dieses Zeug? Ich möchte die Dinge richtig machen.

Antwort

6

Ich habe gerade begonnen, die gesamte Toolchain unter http://reinout.vanrees.org/weblog/tags/softwarereleasesseries.html zu dokumentieren (2010-02-25: muss noch den Buildout und den Pastescript Artikel schreiben).

Grundlegende Toolchain-Idee: Verwenden Sie setuptools, um Ihren Python-Code zu packen. Wie im Artikel "Entwicklung von Django-Apps" heißt es: Jede Anwendung ist ein eigenes Paket. Setzen Sie Ihren Code in ein Verzeichnis und fügen Sie eine setup.py hinzu. Das setup.py enthält die Versionsnummer, den Namen, die Abhängigkeiten und so, und Sie können es ausführen, um beispielsweise ein yourproject-0.1.tar.gz zu erstellen.

Das Herunterladen von allem ("easy_install xyz") führt schnell zu einem völligen Durcheinander der Site-Packages Ihres System-Pythons. Wahrscheinlich mit inkompatiblen Versionen. Buildout (und zum Beispiel virtualenv) bieten Ihnen eine isolierte Umgebung: Installierte Pakete werden nur lokal auf diesem virtualenv/buildout installiert.

Mess Teil 2: Welche Versionen möchten Sie? Um ein gewisses Maß an Wiederholbarkeit und Zuverlässigkeit zu erhalten, müssen Sie in der Lage sein, die von Ihnen verwendeten Versionen zu steuern ("Django 1.0 oder 1.1?"). Buildout erlaubt das.

+0

+1 für den Link zu Ihrer Software-Release-Reihe. (Und schreib weiter! :)) –

+0

Eine Randnotiz zum Unterschied: virtualenv lässt dich alles so einrichten, als wärst du in einer isolierten Umgebung. und normal arbeiten, ohne das globale System zu stören. Buildout installiert alles lokal und ändert den Pfad zu den lokalen Paketen. Beide funktionieren gut. – Liorsion

+0

+1 für die Dokumentation. – BenDundee