buildout是什么Buildout是一個(gè)基于Python的構(gòu)建工具, 通過(guò)一個(gè)配置文件,可以從多個(gè)部分創(chuàng)建,、組裝并部署你的應(yīng)用,,即使應(yīng)用包含了非Python的組件,Buildout也能夠勝任. Buildout不但能夠像setuptools一樣自動(dòng)更新或下載安裝依賴(lài)包,,而且還能夠像virtualenv一樣,,構(gòu)建一個(gè)封閉隔離的開(kāi)發(fā)環(huán)境.
buildout 的中文文檔非常稀少,,這里有篇blog,抄一些東西過(guò)來(lái) demo 步驟假設(shè)你有一個(gè)項(xiàng)目newproject,,從來(lái)用過(guò)buildout,安裝什么的就不說(shuō)了 wget -O bootstrap.py https://bootstrap./bootstrap-buildout.py
此時(shí)你可以看到生成了一些目錄:eggs , develop-eggs ,bin ,parts 等,,先不管 vim buildout.cfg
將下面的東西加到 [buildout] 段, 可以新建一個(gè)versions.cfg來(lái)做以前pip時(shí)requirements.txt的作用 show-picked-versions=true update-versions-file = versions.cfg
例如項(xiàng)目依賴(lài)為ipython,,vim versions.cfg
vim buildout.cfg ,添加一個(gè)develop = 的玩意兒,,假設(shè)開(kāi)發(fā)的東西是個(gè)包,,那么目錄為. ,并且需要寫(xiě)一個(gè)setup.py,否則執(zhí)行bin/buildout 會(huì)報(bào)錯(cuò)
隨便先寫(xiě)一個(gè)簡(jiǎn)單的setup.py, 其中package_dir={'': 'src'} 必寫(xiě),,src為你項(xiàng)目的代碼根目錄,當(dāng)然如果有依賴(lài)包的話需要些install_requires from setuptools import find_packages, setup description='buildout demo', packages=find_packages(exclude=['tests']), package_data={'buildout_demo': ['README.md']},
vim buildout.cfg , 注意這里面一定要有一個(gè)part = 的東西
然后執(zhí)行 bin/buildout , 你就會(huì)看到buildout會(huì)自動(dòng)下載一些包(例如這里的ipython)丟到eggs目錄下 添加part recipe = plone.recipe.command update-command = ${:command}
其中,,每個(gè)part都必須有recipe這個(gè)玩意兒,而recipe則可以認(rèn)為是buildout一些工作流的命令,,例如 zc.recipe.egg 是把包裝到egg目錄,, plone.recipe.command 是在buildout時(shí)可以執(zhí)行的某些命令, 可以在 pypi 搜索 buildout recipe列表
|