python项目开发心_使用zc.buildout构建python项目

如果你曾经是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创建项目非常容易。首先安装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配置

先看一下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

buildout.cfg使用ini格式。其中[buildout]是必须的节。在本节中,可以定义:

develop = .

指定一个或多个要开发的模块,将会被build成develop-eggs下面的egg。每个develop目录下都需要有一个setup.py文件。

对于单个模块的应用,可以用“.”指定使用当前目录,对于多模块应用,可以分别指定各个模块的文件夹。

parts =

xprompt

test

每个buildout可能需要很多个部件(part),parts指定了哪些部件需要build。如果一个部件依赖其他的部件,则被依赖的部件会被首先build。这里面指定了两个部件:xprompt和test。每个part中还可以用parts指定自己的子部件。

recipe = zc.recipe.egg:scripts

每个部件必须指定一个recipe,recipe定义了如何组装该部件。zc.buildout提供了很多recipe,同时作为buildout的发源地,这里也提供了很多recipe。你也可以开发自己的recipe。

每个recipe会定义一些参数,需要在part所在的节中指定这些参数的值。

eggs = xanalogica.tumbler

指定每个部件依赖的模块。

上面的例子中使用的zc.recipe.testrunner是一个常用的recipe,其功能是使用zope.testing.testrunner框架创建进行测试。将会对该节中指定的所有eggs进行测试。可以参考http://www.python.org/pypi/zc.recipe.testrunner 。

buildout.cfg中还可以指定很多其他的配置选项,比如通过interpreter指定python的版本,通过${section_name:param_name}引用已有的配置项等。详细的配置说明可以看这里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在安装vscode时,您遇到了一个问题,即安装python-gi时2.7版本的python覆盖了您的3.8版本的python命令,导致vscode中的jupyter无法启动。为了解决这个问题,您可以尝试以下几种方法: 1. 确保您的电脑上已经安装了3.8版本的python,并且将其添加到系统的环境变量中。这样可以确保在安装python-gi时不会覆盖您的3.8版本的python命令。 2. 如果您已经安装了3.8版本的python,但仍然遇到了问题,可以尝试使用虚拟环境来隔离不同版本的python。您可以使用工具如virtualenv或conda来创建一个独立的虚拟环境,并在该环境中安装所需的python-gi版本。 3. 如果以上方法都无法解决问题,您可以考虑手动编译和安装pygobject。您可以从官方网站下载源代码,并按照它们提供的说明进行编译和安装。这样可以确保您使用的是与您的python版本兼容的pygobject版本。同时,您还可以尝试使用其他构建工具,如buildout、BitBake、fabricate等,来构建和部署应用程序。 总结来说,解决vscode安装pygobject的问题可以通过确保正确的python版本和环境设置,使用虚拟环境隔离不同版本的python,或者手动编译和安装pygobject来实现。希望这些方法能够帮助您解决问题。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [ubuntu安装微信](https://blog.csdn.net/qq_36591505/article/details/115675488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [awesome-python(python集合框架)](https://blog.csdn.net/chehec2010/article/details/119754494)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值