日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

用Buildout来构建Python项目

發(fā)布時間:2025/7/14 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Buildout来构建Python项目 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

用Buildout來構(gòu)建Python項目

?

什么是Buildout


(Remixed by Matt Hamilton, original from?http://xkcd.com/303)

Buildout是一個基于Python的構(gòu)建工具, 通過一個配置文件,可以從多個部分創(chuàng)建、組裝并部署你的應(yīng)用,即使應(yīng)用包含了非Python的組件,Buildout也能夠勝任. Buildout不但能夠像setuptools一樣自動更新或下載安裝依賴包,而且還能夠像virtualenv一樣,構(gòu)建一個封閉隔離的開發(fā)環(huán)境.

初始化Buildout

首先我們新建一個目錄來共享Buildout配置和文件:

~/Projects$ mkdir buildout ~/Projects$ cd buildout

下載一個2.0的bootstrap.py腳本:

~/Projects/buildout$ wget http://downloads.buildout.org/2/bootstrap.py

然后創(chuàng)建一個Buildout的配置文件:

~/Projects/buildout$ touch buildout.cfg

運行bootstrap.py來生成Buildout相關(guān)的文件和目錄:

~/Projects/buildout$ python bootstrap.py Creating directory '/Users/Eric/Projects/buildout/bin'. Creating directory '/Users/Eric/Projects/buildout/parts'. Creating directory '/Users/Eric/Projects/buildout/eggs'. Creating directory '/Users/Eric/Projects/buildout/develop-eggs'. Generated script '/Users/Eric/Projects/buildout/bin/buildout'.

從上面可以看出,創(chuàng)建了目錄bin,parts,eggs,develop-eggs,在bin目錄下生成了buildout腳本:

  • bin目錄用來存放生成的腳本文件
  • parts目錄存放生成的數(shù)據(jù),大多用不上
  • develop-eggs 存放指向開發(fā)目錄的鏈接文件。和buildout.cfg中develop選項相關(guān)
  • eggs 是存放從網(wǎng)絡(luò)上下載下來的egg包。這些包一般在buildout.cfg中的egg選項里定義

把Python和Pyramid集成進來

配置Buildout

~/Projects/buildout$ vim buildout.cfg [buildout] # 每個buildout都要有一個parts列表,也可以為空。 # parts用來指定構(gòu)建什么。如果parts中指定的段中還有parts的話,會遞歸構(gòu)建。 parts = tools[tools] # 每一段都要指定一個recipe, recipe包含python的代碼,用來安裝這一段, # zc.recipe.egg就是把一些把下面的egg安裝到eggs目錄中 recipe = zc.recipe.egg # 定義python解釋器 interpreter = python # 需要安裝的egg eggs =pyramid

執(zhí)行buildout命令來構(gòu)建一下, 這將會把Pyramid集成進來:

~/Projects/buildout$ bin/buildout

用buildout來構(gòu)建項目

現(xiàn)在可以創(chuàng)建Pyramid應(yīng)用了:

~/Projects/buildout$ bin/pcreate -t starter myproject

配置一下Buildout:

~/Projects/buildout$ vim buildout.cfg [buildout] parts =toolsapps develop = myproject[tools] recipe = zc.recipe.egg interpreter = python eggs =pyramid[apps] recipe = zc.recipe.egg eggs = myproject

再次運行一下buildout:

~/Projects/buildout$ bin/buildout

現(xiàn)在可以再buildout的環(huán)境中啟動myproject了:

~/Projects/buildout$ bin/pserve myproject/development.ini Starting server in PID 40619. serving on http://0.0.0.0:6543

最佳實踐/Tips

1. 固化egg的版本

把所有的版本信息寫到[versions]里面:

extends = versions.cfg
versions = versions
show-picked-versions = true

配置中的“show-picked-versions = true?“會在運行buildout的時候把所有的版本打印出來, 把它寫到"versions.cfg"中就可以固化了:

[versions] Chameleon = 2.11 Mako = 0.7.3 MarkupSafe = 0.15 PasteDeploy = 1.5.0 WebOb = 1.2.3 distribute = 0.6.35 repoze.lru = 0.6 translationstring = 1.1 venusian = 1.0a7 zc.buildout = 2.0.1 zc.recipe.egg = 2.0.0a3 zope.deprecation = 4.0.2 zope.interface = 4.0.5# Required by: # pyramid-debugtoolbar==1.0.4 Pygments = 1.6# Required by: # myproject==0.0 pyramid = 1.4# Required by: # myproject==0.0 pyramid-debugtoolbar = 1.0.4# Required by: # myproject==0.0 waitress = 0.8.2

2. 使用mr.developer插件來組織大型的項目, 讓開發(fā)更方便

[buildout] ... extensions = mr.developer …

3. 開發(fā)環(huán)境 VS 生產(chǎn)環(huán)境

我們可以創(chuàng)建多個配置文件, 比如把buildout.cfg作為生產(chǎn)環(huán)境的配置, 把develop的配置從buildout.cfg刪除, 創(chuàng)建一個development.cfg作為開發(fā)環(huán)境的配置:

[buildout]
extends = buildout.cfg
develop = myproject

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/HacTF/p/8082386.html

總結(jié)

以上是生活随笔為你收集整理的用Buildout来构建Python项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。