Virtualenv och Buildout med Django

1,544 views

Published on

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

  • Be the first to like this

No Downloads
Views
Total views
1,544
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Virtualenv och Buildout med Django

    1. 1. Virtualenv och buildout Jonas Nockert jonasnockert@gmail.com @lemonad
    2. 2. Varför virtualenv? • Använd senaste Django och relaterade moduler utan risk att andra projekt slutar fungera • Mer kontroll över miljön dina Django- projekt körs i • Installera och testa saker utan att hela systemet påverkas
    3. 3. Hur installerar jag? $ port install py26-virtualenv eller... $ apt-get install python-virtualenv eller... $ easy_install virtualenv
    4. 4. Skapa ett projekt $ virtualenv2.6 mitt-projekt eller, ännu hellre... $ virtualenv2.6 --no-site-packages mitt-projekt (med MacPorts)
    5. 5. Aktivera virtuell miljö $ cd mitt-projekt $ source bin/activate (mitt-projekt) $ • Håll koll på virtualenv-parenteserna!
    6. 6. Installera (mitt-projekt) $ easy_install django ... Installed /Users/jonas/mitt-projekt/lib/python2.6/ site-packages/Django-1.1-py2.6.egg ... (mitt-projekt) $ django-admin.py startproject hello • Inget sudo så långt ögat når.
    7. 7. deaktivera! (mitt-projekt) $ deactivate $
    8. 8. Toppen! Fast... • Du behöver fortfarande återskapa allt varje gång du installerar ditt projekt ... på din bärbara ... på din server ... och på alla andra ställen där du utvecklar. • Du kan inte lyfta över miljön till en annan plattform
    9. 9. Batteries included? • Även om batterier ingår så är det en hel del till man oftast behöver: django-tagging south python-oauth
    10. 10. och... • PIL • python-memcached • Markdown • JQuery • ...och helst specifika versioner som man vet fungerar bra ihop.
    11. 11. Dependencies • ...och så var det alla dependencies som är utspridda på github, bitbucket, google code och ftp-servrar • (hur var det nu man byggde PIL igen?)
    12. 12. Hej Buildout! • Börja med att ladda hem bootstrap.py som sätter upp buildout: (mitt-projekt) $ curl -O http://svn.zope.org/ *checkout*/zc.buildout/trunk/bootstrap/bootstrap.py • Varför inte bara easy_install zc.buildout när man nu använder virtualenv?
    13. 13. Bootstrap • Kör bootstrap.py (men glöm inte att först aktivera virtualenv) (mitt-projekt) $ python bootstrap.py init • Init-flaggan skapar en konfigurationsfil för buildout, skippa den ifall du redan har en.
    14. 14. Redigera buildout.cfg [buildout] parts = opt libjpeg PIL django-1.1 eggs = django-tagging==0.3.0 [django-1.1] recipe = djangorecipe version = 1.1 project = exampleproject settings = production test = exampleapp testrunner = test-1.1 wsgi = true eggs = ${buildout:eggs} [opt] recipe = plone.recipe.command location = ${buildout:parts-directory}/opt command = mkdir ${opt:location} && mkdir ${opt:location}/bin && mkdir -p ${opt:location}/man/man1 update-command = ${opt:command} [libjpeg] recipe = zc.recipe.cmmi url = http://www.ijg.org/files/jpegsrc.v7.tar.gz extra_options = --prefix=${opt:location} [PIL] recipe = plone.recipe.command command = ${buildout:directory}/bin/easy_install -i http://dist.serverzen.com/pypi/simple PILwoTk update-command = ${PIL:command}
    15. 15. Fika (mitt-projekt) $ ./bin/buildout • Det här kan ta lite tid...
    16. 16. Buildout-recept • Det finns recept för det mesta: Checka ut från subversion, git, hg... Ladda hem och installera tarballs Utföra kommandon i terminalen • Man kan köra parallella Django-recept, t.ex. 1.1 och trunk.
    17. 17. ?!? • Kolla oväntade dependencies i eggs-foldern ifall du kör parallella django-recept. Kanske drogs Django 1.1 in av t.ex. django-flash och körs istället för trunk.
    18. 18. Djangorecipe • Skapar en wrapper runt manage.py vilken laddar alla eggs och andra dependencies. (mitt-projekt) $ django-1.1 shell • Kan automatiskt generera wsgi- konfigurationsfiler wsgi = True ./bin/django-1.1.wsgi
    19. 19. Massor av recept via pypi (http://pypi.python.org/)
    20. 20. Versionskontroll • Det finns massor av filer i mitt bibliotek, vad skall jag checka in? .gitignore bootstrap.py buildout.cfg mitt_djangoprojekt
    21. 21. Versionskontroll • Automatskapade filer läggs i .gitignore: *.pyc *.pyo .installed.cfg .Python bin develop-eggs dist downloads eggs include lib parts
    22. 22. Checka ut $ git clone git://github.com/lemonad/mitt-projekt.git $ virtualenv2.6 --no-site-packages mitt-projekt $ cd mitt-projekt $ source bin/activate (mitt-projekt) $ python bootstrap.py (mitt-projekt) $ bin/buildout (mitt-projekt) $ django-trunk runserver
    23. 23. Hostout • Buildout-recept för deployment • http://plone.org/products/collective.hostout
    24. 24. http://lemonad.jaiku.com http://twitter.com/lemonad

    ×