0
Django & Buildout
                                           Horst Gutmann
                                        zerok@z...
Django
• Web Framework in Python
• MVC
• ... has tons of great features that are
  actually not really relevant for the to...
Django and its libs
• What do we usually need ...
 • Django
 • django-tagging
 • django-threadedcomments
 • (if things lik...
All of that you have to
      install on ...
•   ... your own machine
•   ... your server

•   ... and basically every oth...
Installing from & with ...

•   Straight from an SCM-checkout

    •   Sadly that’s still very common since the apps
     ...
Being root helps

• You have to either install these libraries as
  root user
• ... or you have to start messing around wi...
virtualenv

      • virtualenv lets you                       $ virtualenv myenv
          install Python packages
       ...
virtualenv
•   ... is a great tool if you want to try a new
    library

•   But it doesn’t solve the problem that you hav...
zc.buildout
         •   Buildout now lets you build a whole
             environment with just one config-file

         • ...
Recipes exist ...
• ... that download eggs and build a wrapped
  interpreter to test them
• ... that download a source-dis...
A small example
                                   $ buildout
>>> buildout.cfg                       PyPI           Canoni...
Buildout for Django

•   What is in for Django developers?

    •   A simple way to install dependencies

    •   ... and ...
djangorecipe
• Recipe for Django projects by Jeroen
  Vloothuis:
  http://pypi.python.org/pypi/djangorecipe/
• Creates a D...
Another example
[buildout]
parts = django svnapps

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

• djangorecipe can also be used to create a
  WSGI-script
  • Option: wsgi = true
  • ./bin/django.wsgi
• Natur...
Summary
•   Buildout provides easy dependency management
    from a multitude of sources (public or not and not
    only w...
Some links

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

Django & Buildout (en)

27,731

Published on

Published in: Technology
2 Comments
7 Likes
Statistics
Notes
No Downloads
Views
Total Views
27,731
On Slideshare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
109
Comments
2
Likes
7
Embeds 0
No embeds

No notes for slide

Transcript of "Django & Buildout (en)"

  1. 1. Django & Buildout Horst Gutmann zerok@zerokspot.com http://creativecommons.org/licenses/by-nc-sa/3.0/at/ Photo: http://flickr.com/photos/yakobusan/2363688612/
  2. 2. Django • Web Framework in Python • MVC • ... has tons of great features that are actually not really relevant for the topic at hand • Summary: <3 2
  3. 3. Django and its libs • What do we usually need ... • Django • django-tagging • django-threadedcomments • (if things like DB-bindings are already installed) 3
  4. 4. All of that you have to install on ... • ... your own machine • ... your server • ... and basically every other machine that has anything to do with the development 4
  5. 5. Installing from & with ... • Straight from an SCM-checkout • Sadly that’s still very common since the apps are still quite young • Using a setup.py • Using setuptools and easy_install (PyPI <3) 5
  6. 6. Being root helps • You have to either install these libraries as root user • ... or you have to start messing around with the PYTHONPATH • ... which normally results in just a big mess 6
  7. 7. virtualenv • virtualenv lets you $ virtualenv myenv install Python packages without being root $ source myenv/bin/activate • It lets you build $ cd /some/lib $ python setup.py install environments for those .... packages that you load at will $ deactivate Photo: http://flickr.com/photos/fensterbme/145621388/ 7
  8. 8. virtualenv • ... is a great tool if you want to try a new library • But it doesn’t solve the problem that you have to manually reconstruct the environment every time. • The environments are not portable (C- extensions?) • ... and not moveable (experimental right now) 8
  9. 9. zc.buildout • Buildout now lets you build a whole environment with just one config-file • Basically, it’s similar to Maven in the Java-world, just without XML ;-) • A project consists of multiple parts • Each part defines, where its data is coming from and where to store it Photo: http://flickr.com/photos/mdpettitt/2521514631/ 9
  10. 10. Recipes exist ... • ... that download eggs and build a wrapped interpreter to test them • ... that download a source-distribution and install it • ... that checkout code from Subversion • ... and much much more 10
  11. 11. A small example $ 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 for Django • What is in for Django developers? • A simple way to install dependencies • ... and to freeze them at a version • ... and naturally really fast deployment (even with a WSGI-script) 12
  13. 13. djangorecipe • Recipe for Django projects by Jeroen Vloothuis: http://pypi.python.org/pypi/djangorecipe/ • Creates a Django project with a given version • ... and creates a wrapper for manage.py with all eggs and other dependencies loaded 13
  14. 14. Another example [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? • djangorecipe can also be used to create a WSGI-script • Option: wsgi = true • ./bin/django.wsgi • Naturally also includes all the dependencies 16
  17. 17. Summary • Buildout provides easy dependency management from a multitude of sources (public or not and not only with setuptools) • Dependencies AND freezing of them • For developing on a Django project all you need is one buildout.cfg • djangorecipe also provides you with a WSGI-script • Migrating to it is very easy :-) 17
  18. 18. Some 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.

×