Using Buildout to Develop and Deploy Python Projects
Post on 25-May-2015
4931 Views
Preview:
DESCRIPTION
Transcript
open sourcenowhere to go but
sixfeetup.com/immerse
Using Buildout to Develop and Deploy
Python ProjectsClayton ParkerPyOhio 2009
sixfeetup.com/immerse
Who am I?
• Lead Developer at Six Feet Up, Inc.
• claytron on IRC
sixfeetup.com/immerse
What’s in store?• What is buildout?
• Who uses it?
• Syntax
• Pinning
• Recipes
• Command line usage
sixfeetup.com/immerse
Why buildout?
sixfeetup.com/immerse
Eliminate Confusion
sixfeetup.com/immerse
Who is using it?
• Plone
• Zope
• Grok
• Pinax
sixfeetup.com/immerse
sixfeetup.com/immerse
Lingo
sixfeetup.com/immerse
Syntax[buildout]parts = zope2 instance
# copied from dist.plone.org/releaseextends = plone-versions.cfgversions = versions
[zope2]recipe = plone.recipe.zope2installurl = ${versions:zope2-url}fake-zope-eggs = Trueadditional-fake-eggs = ZODB3 ZConfig
[instance]recipe = plone.recipe.zope2instancezope2-location = ${zope2:location}user = admin:admineggs = Plone
sixfeetup.com/immerse
Advanced Syntax
${part:option}
${zope2:location} ${buildout:directory}option = ${buildout:directory}/somefolder
Variable Substitution
options = foo bar
options += bazoptions -= foo
Option Addition and Removal
sixfeetup.com/immerse
Reserved Characters
: $ % { }
sixfeetup.com/immerse
Pinning
sixfeetup.com/immerse
[buildout]...extensions = buildout.dumppickedversionsdump-picked-versions-file = dumped-versions.cfgoverwrite-picked-versions-file = True
# tell buildout to use our versions partversions = versions
[versions]SQLAlchemy = 0.5.5
sixfeetup.com/immerse
Recipes
sixfeetup.com/immerse
[plonesite]recipe = collective.recipe.plonesiteinstance = instancezeoserver = zeoserversite-id = Ploneadmin-user = adminproducts = profiles-initial = my.package:initialprofiles = my.package:default
sixfeetup.com/immerse
[omelette]recipe = collective.recipe.omeletteeggs = ${instance:eggs}ignore-develop = Trueignores = setuptools# uncomment the line below to have the whole# zope stack available in the omelettepackages = ${zope2:location}/lib/python zope2
sixfeetup.com/immerse
# add the /opt path for local dev so that the egg# can find mysql_config[sql-env]PATH = %(PATH)s:/opt/local/lib/mysql5/bin/:/opt/local/lib/mysql/bin/
[MySQL-python]recipe = zc.recipe.egg:customegg = MySQL-pythonenvironment = sql-env
sixfeetup.com/immerse
Roll Your Own
$ easy_install ZopeSkel$ paster create --list-templatesAvailable templates: ... recipe: A recipe project for zc.buildout ...$ paster create -t recipe my.recipe.name
sixfeetup.com/immerse
Command Line
sixfeetup.com/immerse
Baby Steps
$ cd path/to/mybuildout
$ python2.4 bootstrap.pyCreating directory 'mybuildout/bin'.Creating directory 'mybuildout/parts'.Creating directory 'mybuildout/develop-eggs'.Generated script 'mybuildout/bin/buildout'.
$ bin/buildout
sixfeetup.com/immerse
Options• -v and -q
• increase and decrease verbosity
• -n and -N
• Newest and non-newest modes
• -O and -o
• online and offline mode
• -t
• socket timeout
sixfeetup.com/immerse
Update your buildout
$ bin/buildout -v
$ bin/buildout -Nvvv
$ bin/buildout -No
$ bin/buildout -t 10
sixfeetup.com/immerse
Assignments
$ bin/buildout instance:debug-mode=on
$ bin/buildout buildout:log-level=70
$ bin/buildout -N instance:debug-mode=on -v
$ bin/buildout -Nv plonesite:enabled=false
$ bin/buildout plonesite:site-replace=true
sixfeetup.com/immerse
Commands
$ bin/buildout install
$ bin/buildout -Nv install zope2 instance
$ bin/buildout -nv install instance
sixfeetup.com/immerse
Default Settings
[buildout]eggs-directory = /Users/clayton/.buildout/eggsdownload-cache = /Users/clayton/.buildout/downloads
zope-directory = /Users/clayton/.buildout/zope
~/.buildout/default.cfg
sixfeetup.com/immerse
Helpful Tools
• http://pypi.python.org/pypi/collective.eggproxy
• http://pypi.python.org/pypi/collective.dist
• Fabric or Paver
sixfeetup.com/immerse
What did we learn?• What is buildout?
• Who is using it?
• Syntax
• Pinning
• Recipes
• Command line usage
sixfeetup.com/immerse
Links• http://buildout.org
• http://pypi.python.org/pypi/zc.buildout
• http://www.sixfeetup.com/swag/buildout-quick-reference-card
• http://pypi.python.org
• Plone Specific:
• https://svn.sixfeetup.com/svn/public/examples/PyOhio09
• http://plone.org/documentation/tutorial/buildout
• https://svn.sixfeetup.com/svn/public/buildout/debug.cfg
sixfeetup.com/immerse
1 non-profit project • 10 workshops • 14 mentors • 3 days
Learn Plone by building a website from A to Z
sixfeetup.com/immerse
Photo Credits• http://flickr.com/photos/monsieurlam/2645956083/
• http://flickr.com/photos/_boris/2796908072/
• http://flickr.com/photos/b-tal/163450213/
• http://flickr.com/photos/bullish1974/2648544508/
• http://flickr.com/photos/haydnseek/87432002/
• http://flickr.com/photos/disowned/1158260369/
• http://flickr.com/photos/7603557@N08/2662531345/
• http://flickr.com/photos/julishannon/2151986631/
• http://flickr.com/photos/julishannon/2152778524/
• http://flickr.com/photos/lollyknit/1155225799/
• http://flickr.com/photos/binary_koala/86227485/
• http://flickr.com/photos/marcoveringa/2951042391
top related