如果你曾经是java开发者并开始写python,那么你一定十分怀念maven的依赖管理和自动构建功能。你可能已经接触过easy_install, pip, virtualenv等工具,但这些工具并不能完全解决问题。而zc.buildout恰好是你需要的答案。buildout不但能够像setuptools一样自动更新或下载安装依赖包,而且还能够像virtualenv一样,构建一个封闭的开发环境。
zc.buildout是一个基于python的构建(build)系统,通过一个配置文件,可以从多个部分创建、组装并部署你的应用,即使应用包含了非python的组成部分,buildout也能够胜任。
buildout最早由Zope团队的Jim Fulton创建,后来被很多python项目和社区使用并获得了极高的评价。比如Django的创建者Jacob Kaplan-Moss评价说,buildout是部署应用的一种非常文明的方式。另一个比较夸张的评价来自《Python For Unix and Linux》的合著者Noah Gift,由于xxx的原因(你懂的)就不翻译了,原文如下:
"While not directly aiming to solve world peace, it perhaps will play a role in the future, as people will be less angry about application deployment and will have more time for making love and music."
使用zc.buildout创建项目非常容易。首先安装zc.buildout(可以使用easy_install或pip),
然后在项目文件夹中运行buildout init:
$ mkdir newproject
$ cd newproject/
$ buildout init
Creating '.../newproject/buildout.cfg'.
Creating directory '.../newproject/bin'.
Creating directory '.../newproject/parts'.
Creating directory '.../newproject/eggs'.
Creating directory '.../newproject/develop-eggs'.
Generated script '.../newproject/bin/buildout'.
其中,buildout.cfg是配置文件,类似于maven的pom文件,而bin/buildout是build脚本。
当共享代码的时候,只有buildout.cfg需要加入版本控制。checkout之后,只需要运行buildout bootstrap,就可以再次生成这些文件夹和文件。
当然,作为一个文明人,你不必要求其他人也安装zc.buildout,只需要下载bootstrap.py(也可以用buildout bootstrap生成)并将这个文件也加入版本控制。这样,其他人可以通过运行bootstrap.py生成需要的文件。
整个过程如果出现DistributionNotFound之类的错误,一般是由于不干净的环境造成的,通过virtualenv创建全新的环境通常可以解决。
先看一下buildout.cfg的一个例子:
[buildout]
develop = .
parts =
xprompt
test[xprompt]
recipe = zc.recipe.egg:scripts
eggs = xanalogica.tumbler
interpreter = xprompt[test]
::...
recipe = zc.recipe.testrunner
eggs = xanalogica.tumbler
免责声明:
当前网页内容, 由 大妈 ZoomQuiet 使用工具: ScrapBook :: Firefox Extension 人工从互联网中收集并分享;
内容版权归原作者所有;
本人对内容的有效性/合法性不承担任何强制性责任.
若有不妥, 欢迎评注提醒:
或是邮件反馈可也:
askdama[AT]googlegroups.com
订阅 substack 体验古早写作:
点击注册~> 获得 100$ 体验券:![]()
关注公众号, 持续获得相关各种嗯哼:
![]()
自怼圈/年度番新
![]()
关于 ~ DebugUself with DAMA ;-)
粤ICP备18025058号-1
公安备案号: 44049002000656 ...::