• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Django & Buildout
 

Django & Buildout

on

  • 3,540 views

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

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

Statistics

Views

Total Views
3,540
Views on SlideShare
3,417
Embed Views
123

Actions

Likes
1
Downloads
14
Comments
0

3 Embeds 123

http://zerokspot.com 120
http://www.slideshare.net 2
http://cc.bingj.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Django & Buildout Django & Buildout Presentation Transcript

    • 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