Buildout是一個基於Python的構建工具, 經過一個配置文件,能夠從多個部分建立、組裝並部署你的應用,即便應用包含了非Python的組件,Buildout也可以勝任. Buildout不但可以像setuptools同樣自動更新或下載安裝依賴包,並且還可以像virtualenv同樣,構建一個封閉隔離的開發環境.html
buildout 的中文文檔很是稀少,這裏有篇blog,抄一些東西過來python
demogit
假設你有一個項目newproject,歷來用過buildout,安裝什麼的就不說了github
cd newproject buildout init wget -O bootstrap.py https://bootstrap.pypa.io/bootstrap-buildout.py python bootstrap.py
此時你能夠看到生成了一些目錄:eggs
, develop-eggs
,bin
,parts
等,先無論bootstrap
vim buildout.cfg
vim
將下面的東西加到 [buildout] 段, 能夠新建一個versions.cfg來作之前pip時requirements.txt的做用工具
show-picked-versions=true extends = versions.cfg update-versions-file = versions.cfg versions = versions
例如項目依賴爲ipython,vim versions.cfg
post
[versions] ipython = 5.1.0
vim buildout.cfg
,添加一個develop = 的玩意兒,假設開發的東西是個包,那麼目錄爲.
,而且須要寫一個setup.py,不然執行bin/buildout
會報錯ui
[buildout] develop = .
隨便先寫一個簡單的setup.py, 其中package_dir={'': 'src'}
必寫,src爲你項目的代碼根目錄,固然若是有依賴包的話須要些install_requires
url
# -*- coding: utf-8 -*- from setuptools import find_packages, setup setup( name='buildout_demo', version='0.0.1', license='MIT', author='', author_email='', description='buildout demo', url='', packages=find_packages(exclude=['tests']), package_data={'buildout_demo': ['README.md']}, package_dir={'': 'src'}, )
vim buildout.cfg
, 注意這裏面必定要有一個part =
的東西
而後執行 bin/buildout
, 你就會看到buildout會自動下載一些包(例如這裏的ipython)丟到eggs目錄下
添加part
[buildout] parts = tools [tools] recipe = zc.recipe.egg interpreter = ipython eggs = ipython [ls_root] recipe = plone.recipe.command command = ls -al / update-command = ${:command}
其中,每一個part都必須有recipe這個玩意兒,而recipe則能夠認爲是buildout一些工做流的命令,例如 zc.recipe.egg
是把包裝到egg目錄, plone.recipe.command
是在buildout時能夠執行的某些命令, 能夠在 pypi 搜索 buildout recipe列表