Django & Buildout
                                           Horst Gutmann
                                        zerok@z...
Django

• Web Framework in Python
• MVC
• ... jede Menge andere tolle Features, die
  hier nicht weiter relevant sind
• Zu...
Django und seine libs
• Was brauchen wir so alles...
 • Django
 • django-tagging
 • django-threadedcomments
 • (sofern man...
Das alles installiert man
       das alles ...
 •   ... bei sich
 •   ... am Server
 •   ... auf jedem weiteren Rechner, d...
Installiert aus & mit ...

•   Direkt aus einem VCS heraus

    •   Derzeit leider noch sehr gängig, da Apps
        i.d.R...
Alles root oder was?

• Man muss Libraries entweder als root
  installieren
• ... oder man ist gezwungen händisch den
  PY...
virtualenv
       • virtualenv ermöglicht
           das einfache Installieren               $ virtualenv myenv
          ...
virtualenv
• ... ist eine tolle Sache, wenn man Dinge
  ausprobieren möchte.
• Es löst aber nicht das Problem, dass man di...
zc.buildout
          •   Buildout ermöglicht es, mit einer einzigen
              config-Datei, eine Arbeitsumgebung (z.B....
Rezepte
• ... die eggs herunterladen und einem
  eigenen Interpreter zur Verfügung stellen
• ... die ein Distutils-Paket h...
Kleines Beispiel
                                   $ buildout
>>> buildout.cfg                       PyPI           Canon...
Buildout für Django
•   Das bringt mir als Django-Entwickler

    •   ... einen einfachen Weg, alle Abhängigkeiten
       ...
djangorecipe

• Rezept für Django-Projekte von Jeroen
  Vloothuis:
  http://pypi.python.org/pypi/djangorecipe/
• Legt ein ...
Noch ein Beispiel
[buildout]
parts = django svnapps

[django]
recipe = djangorecipe
version = 1.0
project = mysite
setting...
./bin/django
import sys
sys.path[0:0] = [
  '$HOME/.buildout/eggs/djangorecipe-0.12.1-py2.6.egg',
  '$HOME/.buildout/eggs/...
mod_wsgi?

• Das djangorecipe kann auch einen WSGI-
  Wrapper erstellen
  • Option: wsgi = true
  • ./bin/django.wsgi
• Lä...
Zusammenfassend
•   Buildout ermöglich Dependency-Management
    von einer Vielzahl von Quellen (im Gegensatz zu
    setup...
Ein paar Links

• http://www.djangoproject.com
• http://pypi.python.org/pypi/zc.buildout/
• http://pypi.python.org/pypi/dj...
Upcoming SlideShare
Loading in...5
×

Django & Buildout

2,167

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,167
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
15
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Django & Buildout

  1. 1. 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/
  2. 2. Django • Web Framework in Python • MVC • ... jede Menge andere tolle Features, die hier nicht weiter relevant sind • Zusammengefasst: <3 2
  3. 3. 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
  4. 4. 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
  5. 5. 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
  6. 6. 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
  7. 7. 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
  8. 8. 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
  9. 9. 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
  10. 10. 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
  11. 11. 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
  12. 12. 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
  13. 13. 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
  14. 14. 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
  15. 15. ./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
  16. 16. mod_wsgi? • Das djangorecipe kann auch einen WSGI- Wrapper erstellen • Option: wsgi = true • ./bin/django.wsgi • Lädt auch alle Abhängigkeiten 16
  17. 17. 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
  18. 18. 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
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×