日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

用Buildout来构建Python项目

發布時間:2025/7/14 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用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.2

2. 使用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项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。