• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Virtualenv och Buildout med Django
 

Virtualenv och Buildout med Django

on

  • 2,072 views

 

Statistics

Views

Total Views
2,072
Views on SlideShare
2,067
Embed Views
5

Actions

Likes
0
Downloads
5
Comments
0

1 Embed 5

http://www.slideshare.net 5

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

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

Virtualenv och Buildout med Django Virtualenv och Buildout med Django Presentation Transcript

  • Virtualenv och buildout Jonas Nockert jonasnockert@gmail.com @lemonad
  • 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
  • Hur installerar jag? $ port install py26-virtualenv eller... $ apt-get install python-virtualenv eller... $ easy_install virtualenv
  • Skapa ett projekt $ virtualenv2.6 mitt-projekt eller, ännu hellre... $ virtualenv2.6 --no-site-packages mitt-projekt (med MacPorts)
  • Aktivera virtuell miljö $ cd mitt-projekt $ source bin/activate (mitt-projekt) $ • Håll koll på virtualenv-parenteserna!
  • 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.
  • deaktivera! (mitt-projekt) $ deactivate $
  • 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
  • Batteries included? • Även om batterier ingår så är det en hel del till man oftast behöver: django-tagging south python-oauth
  • och... • PIL • python-memcached • Markdown • JQuery • ...och helst specifika versioner som man vet fungerar bra ihop.
  • 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?)
  • 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?
  • 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.
  • 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}
  • Fika (mitt-projekt) $ ./bin/buildout • Det här kan ta lite tid...
  • 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.
  • ?!? • 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.
  • 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
  • Massor av recept via pypi (http://pypi.python.org/)
  • Versionskontroll • Det finns massor av filer i mitt bibliotek, vad skall jag checka in? .gitignore bootstrap.py buildout.cfg mitt_djangoprojekt
  • Versionskontroll • Automatskapade filer läggs i .gitignore: *.pyc *.pyo .installed.cfg .Python bin develop-eggs dist downloads eggs include lib parts
  • 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
  • Hostout • Buildout-recept för deployment • http://plone.org/products/collective.hostout
  • http://lemonad.jaiku.com http://twitter.com/lemonad