Buildout 是什么? <ul><li>Buildout 是一个基于 python 的 build 系统
从多个零件(parts),创建,组装和部署复杂的应用
创建一个 buildout 的配置文件,能在以后重建相同的软件
Create by Jim Fulton of Zope Corporation </li></ul>
我们能用buildout做什么? <ul><li>依赖管理
建立一个开发环境
部署一个应用
管理一个复杂的项目 </li></ul>
怎样开始? <ul><li>安装 zc.buildout
- 只有一个依赖:setuptools
- 可以直接 easy_install zc.buildout
- 或在项目目录里下载 bootstrap.py
执行 python boostrap.py </li></ul>
distutils: -  发布 python 模块 -  安装 python 模块 setuptools: -  增强了 distutils 的功能 -  简化了 setup.py 脚本中的内容 -  最大的优势是它的包管理能力,自动下载安装...
理解 buildout.cfg <ul><li>[buildout]
- 是整个配置文件的全局配置段
- 列出哪些要分别独立安装的part,每一个part
与一个 recipe 关联
- parts
– 按指定的顺序依次运行各个part
Upcoming SlideShare
Loading in …5
×

Buildout

1,508 views
1,343 views

Published on

ZC.buildout 简单介绍

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,508
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
21
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • 我们项目的全局设置: [buildout] Parts = Myqpt Xapian … Find-links = Develop =
  • Buildout

    1. 1. Buildout 是什么? <ul><li>Buildout 是一个基于 python 的 build 系统
    2. 2. 从多个零件(parts),创建,组装和部署复杂的应用
    3. 3. 创建一个 buildout 的配置文件,能在以后重建相同的软件
    4. 4. Create by Jim Fulton of Zope Corporation </li></ul>
    5. 5. 我们能用buildout做什么? <ul><li>依赖管理
    6. 6. 建立一个开发环境
    7. 7. 部署一个应用
    8. 8. 管理一个复杂的项目 </li></ul>
    9. 9. 怎样开始? <ul><li>安装 zc.buildout
    10. 10. - 只有一个依赖:setuptools
    11. 11. - 可以直接 easy_install zc.buildout
    12. 12. - 或在项目目录里下载 bootstrap.py
    13. 13. 执行 python boostrap.py </li></ul>
    14. 14. distutils: - 发布 python 模块 - 安装 python 模块 setuptools: - 增强了 distutils 的功能 - 简化了 setup.py 脚本中的内容 - 最大的优势是它的包管理能力,自动下载安装相关依赖 zc.buildout: - 通过一个配置文件 buildout.cfg 使用 setuptools 来完成包和相关的依赖下载安装
    15. 15. 理解 buildout.cfg <ul><li>[buildout]
    16. 16. - 是整个配置文件的全局配置段
    17. 17. - 列出哪些要分别独立安装的part,每一个part
    18. 18. 与一个 recipe 关联
    19. 19. - parts
    20. 20. – 按指定的顺序依次运行各个part
    21. 21. - eggs
    22. 22. – 为当前项目下载和安装的 egg 列表
    23. 23. - 可以指定版本: reportlab >= 2.3, < 2.4 </li></ul>
    24. 24. <ul><li>- find-links
    25. 25. – 增加一个搜索,下载 egg 的 url
    26. 26. – 可以增加一个全路径的URL, 如,pisa
    27. 27. find-links = http://download.zopen.cn/pypi/pisa-3.0.33.tar.gz
    28. 28. - develop
    29. 29. – 针对没有发布的egg
    30. 30. – 有些egg 的名称仍然要在part里的eggs列表里列出 </li></ul>
    31. 31. <ul><li>- extends 和 version
    32. 32. – extends 引用一个网络文件或是本地文件添加额外的依赖
    33. 33. – versions 指定依赖的版本 </li></ul>
    34. 34. 介绍下app part 1 <ul><li>Recipe = zc.recipe.egg
    35. 35. – 使用 zc.recipe.egg
    36. 36. Eggs = Zopen.frs.model
    37. 37. –告诉zc.buildout要装这些 egg
    38. 38. Extra-paths = ${xapian:location}/lib/python
    39. 39. – 额外要加入 sys.path 里的路径
    40. 40. – ${xapian:localtion} 这表示名叫 xapian 的
    41. 41. part 路径 (parts/xapian/)
    42. 42. – ${buildout:directory} 当前 buildout.cfg 所在
    43. 43. 的目录 </li></ul>
    44. 44. <ul><li>Executable
    45. 45. – 指定一个python解释器,而不是当前系统
    46. 46. 的默认python解释器
    47. 47. Eggs-directory
    48. 48. – 指定一个eggs的缓存目录,这可以供几个
    49. 49. buildout 共同使用,节约下载时间和磁盘空间
    50. 50. – 如果在*nix上,也可以在
    51. 51. ~/.buildout/default.cfg 里指定 </li></ul>
    52. 52. <ul><li>Download-cache
    53. 53. – 下载源代码后存放的位置 </li></ul>
    54. 54. bin下的脚本是如何生成的? Distribution 下的setup.py 文件: setup(name='test', ... entry_points={ 'console_scripts': [ 'script1 = test.module1:main', 'script2 = test.module2:main', … setuptools会根据console_scripts下的内容生成相对应的脚本,上例则会生成 script1 和 script2 的脚本 格式: script_name = package.module:function
    55. 55. Buildout 运行参数 -v 更多详细的输出 -q 安静模式 -c 指定一个配置文件,默认是当前目录下的 buildout.cfg -t 下载超时的秒数 -U不要去读取用户home下的配置文件 -o 离线模式, 在buildout.cfg 里也可以配置 offline=true -O非离线模式 -n 永远下载最新的egg版本,等同于buildout 里的 newest=True -N 不要下载最新的 egg 版本 -D 调试选项,通常永远调试一个recipe的错误 命令选项: Install [parts] : 只安装提供的parts Bootstrap : 创建一个新的buildout Init : 初始一个buildout, 如果当前目录下没有buildout.cfg 那么 会自动创建一个 我们最常用的命令选项: binbuildout -Nv
    56. 56. 介绍下Buildout的目录结构 1 <ul><li>bootstrap.py
    57. 57. - 初始化当前项目的目录
    58. 58. - 从网络安装 zc.buildout 和 setuptools
    59. 59. buildout.cfg
    60. 60. - 当前项目的 build 配置
    61. 61. .install.cfg
    62. 62. - 一个隐藏的文件,显示当前项目的 build 状态
    63. 63. - 如果 buildout.cfg 里修改了某个 parts ,那么 zc.buildout 就会更新该文件 </li></ul>
    64. 64. 介绍下Buildout的目录结构 2 <ul><li>parts/
    65. 65. - 每一个 part 会在该目录下为它的 recipe 的
    66. 66. 使用创建一个保留目录
    67. 67. - 不要手工去修改这个目录下的东西,因为
    68. 68. buildout 会覆盖这些修改
    69. 69. develop-eggs/
    70. 70. - 存放一些软链接,或是一些快捷方式到开发目 录
    71. 71. - 这些目录内容在 buildout.cfg 的 develop =
    72. 72. DIRS 指定 </li></ul>
    73. 73. 介绍下Buildout的目录结构 3 <ul><li>bin/
    74. 74. - 执行脚本的存放位置
    75. 75. - 一些 eggs 的 entrypoints
    76. 76. bin/buildout
    77. 77. - 调用 zc.buildout
    78. 78. bin/mypython
    79. 79. - 一个包含所有 parts 的 python 的解释器
    80. 80. - 这个名字使用 interprerter = mypython 指定 </li></ul>
    81. 81. 介绍下Buildout的目录结构 4 <ul><li>eggs/
    82. 82. - 从网上下载的egg的保存目录
    83. 83. - 这些parts里指定的egg会被映射到sys.path
    84. 84. - buildout.cfg: eggs-directory 配置该路径
    85. 85. donwloads/
    86. 86. - 保存从网络上下载的源码包
    87. 87. - buildout.cfg download-cache 配置该路径 </li></ul>
    88. 88. 一些有用的 recipe <ul><li>zc.recipe.egg: 将egg安装到buildout的eggs缓存目录,如果该egg有执行脚本,那么也会在bin目录下生成相应的脚本
    89. 89. zc.recipe.cmmi: ./configure; make; make install 三步曲
    90. 90. iw.recipe.cmd: 调用外部命令,来完成一个任务
    91. 91. zopen.recipe.pkg: 公司自己写的一个 recipe 适用于 debian 系统,用于 apt 安装一系列软件,依赖 python-apt
    92. 92. collective.recipe.modwsgi: 生成供mod_wsgi使用的文件 </li></ul>
    93. 93. easy_install 参数如何在buildout 里设置 easy_install buildout --install-dir 将egg 安装到哪个目录,默认是 /usr/lib/python2.6/site-pacakes/ eggs-directory --upgrade (-U) 使用最新的版本 Newest = False or True --find-links 用于其它包的索引url Find-links = --always-unzip (-Z) 永远使用解压后的 egg Unzip = True
    94. 94. 参考资料 <ul><li>http://www.buildout.org/docs/
    95. 95. http://plone.org/documentation/manual/developer-manual/managing-projects-with-buildout
    96. 96. http://peak.telecommunity.com/DevCenter/setuptools
    97. 97. http://peak.telecommunity.com/DevCenter/EasyInstall </li></ul>
    98. 98. FAQ <ul><li>Any Questions ? </li></ul>

    ×