用Buildout来构建Python项目
用Buildout來構建Python項目
?
什么是Buildout
(Remixed by Matt Hamilton, original from?http://xkcd.com/303)
Buildout是一個基于Python的構建工具, 通過一個配置文件,可以從多個部分創建、組裝并部署你的應用,即使應用包含了非Python的組件,Buildout也能夠勝任. Buildout不但能夠像setuptools一樣自動更新或下載安裝依賴包,而且還能夠像virtualenv一樣,構建一個封閉隔離的開發環境.
初始化Buildout
首先我們新建一個目錄來共享Buildout配置和文件:
~/Projects$ mkdir buildout ~/Projects$ cd buildout下載一個2.0的bootstrap.py腳本:
~/Projects/buildout$ wget http://downloads.buildout.org/2/bootstrap.py然后創建一個Buildout的配置文件:
~/Projects/buildout$ touch buildout.cfg運行bootstrap.py來生成Buildout相關的文件和目錄:
~/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'.從上面可以看出,創建了目錄bin,parts,eggs,develop-eggs,在bin目錄下生成了buildout腳本:
- bin目錄用來存放生成的腳本文件
- parts目錄存放生成的數據,大多用不上
- develop-eggs 存放指向開發目錄的鏈接文件。和buildout.cfg中develop選項相關
- eggs 是存放從網絡上下載下來的egg包。這些包一般在buildout.cfg中的egg選項里定義
把Python和Pyramid集成進來
配置Buildout
~/Projects/buildout$ vim buildout.cfg [buildout] # 每個buildout都要有一個parts列表,也可以為空。 # parts用來指定構建什么。如果parts中指定的段中還有parts的話,會遞歸構建。 parts = tools[tools] # 每一段都要指定一個recipe, recipe包含python的代碼,用來安裝這一段, # zc.recipe.egg就是把一些把下面的egg安裝到eggs目錄中 recipe = zc.recipe.egg # 定義python解釋器 interpreter = python # 需要安裝的egg eggs =pyramid執行buildout命令來構建一下, 這將會把Pyramid集成進來:
~/Projects/buildout$ bin/buildout用buildout來構建項目
現在可以創建Pyramid應用了:
~/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現在可以再buildout的環境中啟動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.22. 使用mr.developer插件來組織大型的項目, 讓開發更方便
[buildout] ... extensions = mr.developer …3. 開發環境 VS 生產環境
我們可以創建多個配置文件, 比如把buildout.cfg作為生產環境的配置, 把develop的配置從buildout.cfg刪除, 創建一個development.cfg作為開發環境的配置:
[buildout]
extends = buildout.cfg
develop = myproject
?
?
轉載于:https://www.cnblogs.com/HacTF/p/8082386.html
總結
以上是生活随笔為你收集整理的用Buildout来构建Python项目的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: json.dumps和loads方法
- 下一篇: 前端怎样获取后端生成的验证码图片,并且点