Django & Buildout

60 %
40 %
Information about Django & Buildout
Technology

Published on October 14, 2008

Author: zerok

Source: slideshare.net

Description

Short intro about how to use Buildout to speed up the development and deployment of Django projects

Django & Buildout Horst Gutmann zerok@zerokspot.com http://creativecommons.org/licenses/by-nc-sa/3.0/at/ Foto von http://flickr.com/photos/yakobusan/2363688612/

Django • Web Framework in Python • MVC • ... jede Menge andere tolle Features, die hier nicht weiter relevant sind • Zusammengefasst: <3 2

Django und seine libs • Was brauchen wir so alles... • Django • django-tagging • django-threadedcomments • (sofern man schon die DB-libs usw. bereits installiert hat) 3

Das alles installiert man das alles ... • ... bei sich • ... am Server • ... auf jedem weiteren Rechner, der irgendwie irgendwas mit der Entwicklung zu tun haben soll 4

Installiert aus & mit ... • Direkt aus einem VCS heraus • Derzeit leider noch sehr gängig, da Apps i.d.R. noch sehr frisch sind • Mit einer setup.py • Mit setuptools und easy_install (PyPI <3) 5

Alles root oder was? • Man muss Libraries entweder als root installieren • ... oder man ist gezwungen händisch den PYTHONPATH zu manipulieren • ..., was die ganze Geschichte sehr umständlich macht 6

virtualenv • virtualenv ermöglicht das einfache Installieren $ virtualenv myenv von Bibliotheken ohne $ source myenv/bin/activate root-Rechten $ cd /some/lib • Aufbau von eigenen $ python setup.py install Umgebungen, die .... beliebig geladen $ deactivate werden können. Foto von http://flickr.com/photos/fensterbme/145621388/ 7

virtualenv • ... ist eine tolle Sache, wenn man Dinge ausprobieren möchte. • Es löst aber nicht das Problem, dass man die Umgebungen immer händisch aufbauen muss. • Sie sind nicht portierbar (C-Extensions?) • ... und sie sind auch nur begrenzt verschiebbar. 8

zc.buildout • Buildout ermöglicht es, mit einer einzigen config-Datei, eine Arbeitsumgebung (z.B. mit Abhängigkeiten) aufzubauen • An sich die gleiche Idee wie bei Maven (Java), nur einfacher und ohne XML • Ein Projekt besteht hier aus Teilen • Woher kommen die Daten für den Teil und wo werden sie abgelegt Foto von http://flickr.com/photos/mdpettitt/2521514631/ 9

Rezepte • ... die eggs herunterladen und einem eigenen Interpreter zur Verfügung stellen • ... die ein Distutils-Paket herunterladen und installieren • ... die aus einem svn-Repository auschecken können • usw. 10

Kleines Beispiel $ buildout >>> buildout.cfg PyPI Canonical [buildout] parts = sample [sample] recipe = zc.recipe.eggs interpreter = myinterpreter eggs = storm==0.12 $./bin/myinterpreter > from storm.locals import * 11

Buildout für Django • Das bringt mir als Django-Entwickler • ... einen einfachen Weg, alle Abhängigkeiten zu installieren • ... und sie zu fixieren, ohne Angst vor neuen Versionen haben zu müssen. • ... sowie schnelleres Deployment mit diesen Abhängigkeiten 12

djangorecipe • Rezept für Django-Projekte von Jeroen Vloothuis: http://pypi.python.org/pypi/djangorecipe/ • Legt ein Django-Projekt mit einer bestimmten Version an • ... und erstellt einen manage.py-Wrapper 13

Noch ein Beispiel [buildout] parts = django svnapps [django] recipe = djangorecipe version = 1.0 project = mysite settings = settings extra-paths = ${svnapps:location}/tagging [svnapps] recipe = iw.recipe.subversion urls = http://django-tagging.googlecode.com/svn/trunk/ tagging 14

./bin/django import sys sys.path[0:0] = [ '$HOME/.buildout/eggs/djangorecipe-0.12.1-py2.6.egg', '$HOME/.buildout/eggs/zc.recipe.egg-1.1.0-py2.6.egg', '$HOME/.buildout/eggs/zc.buildout-1.1.1-py2.6.egg', '$HOME/.buildout/eggs/setuptools-0.6c9-py2.6.egg', '$HOME/tmp/buildout2/parts/django', '$HOME/tmp/buildout2', '$HOME/tmp/buildout2/parts/svnapps/tagging', ] import djangorecipe.manage if __name__ == '__main__': djangorecipe.manage.main('mysite.settings') 15

mod_wsgi? • Das djangorecipe kann auch einen WSGI- Wrapper erstellen • Option: wsgi = true • ./bin/django.wsgi • Lädt auch alle Abhängigkeiten 16

Zusammenfassend • Buildout ermöglich Dependency-Management von einer Vielzahl von Quellen (im Gegensatz zu setuptools alleine) • Dependency + Version-Freeze • Ein Django-Projekt damit entwickeln setzt nur noch eine buildout.cfg voraus • djangorecipe bringt auch ein .wsgi-Script mit • Und migrieren ist nicht mal aufwendig ;-) 17

Ein paar Links • http://www.djangoproject.com • http://pypi.python.org/pypi/zc.buildout/ • http://pypi.python.org/pypi/djangorecipe/ • Icons: http://graffletopia.com/stencils/144 • Pony: http://djangopony.com 18

Add a comment

Related presentations

Related pages

Django & Buildout-Folien - zerokspot.com

Sie beschreiben kurz, wie man mit Buildout ein Django-Projekt verwaltet und auch ein entsprechendes WSGI-Script erstellt, ohne zusätzliche Biliotheken in ...
Read more

Developing Django apps with zc.buildout « Jacob Kaplan-Moss

Developing a Django app with zc.buildout. Over the weekend I put together django-shorturls, the latest in a series of small plugable Django apps I’ve ...
Read more

Django buildout - Stack Overflow

I'm starting to play around with using buildout for Django. I'd like to use buildout as the main installation method for deploying projects and applications.
Read more

Django Packages : Buildout

Django related recipes and tools for getting your project running under this dependency management system.
Read more

django and buildout - Google Groups

it seems to work with mr.developer [buildout] extensions = mr.developer sources = sources auto-checkout = django-mptt parts =
Read more

Django buildout on windows - Stack Overflow

For my django projects I have created a nice working workflow. Using buildout to 'bootstrap' a project and the apps I have developed based on versions.
Read more

Index of Packages : Python Package Index - PyPI - the ...

Package Description; djangorecipe 2.1.2: Buildout recipe for Django: djangorecipe 2.1.1: Buildout recipe for Django: djangorecipe 2.1: Buildout recipe for ...
Read more

buildout and django - Google Groups

I tried using buildout to get some django eggs including django-page-cms which has a dependency on mptt svn trunk. How do you take a svn checkout and make ...
Read more

Google Code Archive - Long-term storage for Google Code ...

django-buildout. Loading... Google; About Google; Privacy; Terms ...
Read more