将未使用的鸡蛋移动到指定目录的buildout扩展
buildout.gc的Python项目详细描述
构建垃圾收集器
简介
gc扩展可用于确保egg目录只包含“used”eggs。 扩展可以报告、将未使用的鸡蛋移动到指定的目录或只是删除egs。
安装
garbase collector是一个buildout扩展,可以像这样添加它
[buildout] extensions = buildout.gc
选项
- 旧鸡蛋目录
- 要buildout.gc将未使用的鸡蛋移动到的目录。 如果一个Excel鸡蛋已经存在,我们在“使用”鸡蛋目录中删除一个
- 去除旧鸡蛋
- 取出鸡蛋而不是移动
- 老鸡蛋系数
- 删除/移动鸡蛋目录,如果未使用的鸡蛋数量少于总鸡蛋数量*<;因子>;。 有时构建可能会失败,在这种情况下,此扩展将确定 不使用所有软件包。在这种情况下,此参数阻止删除所有鸡蛋。
示例
[buildout] extensions = buildout.gc old-eggs-directory = ${buildout:directory}/old-eggs/
用
测试ZC.建筑:2.xx 巨蟒:2.4.6、2.6.8、2.7.12、3.3、3.5
使用其他扩展
我研究了buildout.dumppickedversions的工作原理,并以类似的方式实现了这个扩展。 这个分机和那个分机并排运行得很好。
示例输出
移动鸡蛋
Moved unused egg: webcouturier.dropdownmenu-2.3-py2.6.egg Moved unused egg: collective.uploadify-1.0-py2.6.egg Moved unused egg: collective.simplesocial-1.6-py2.6.egg Moved unused egg: collective.autopermission-1.0b2-py2.6.egg
报告
Don't have a 'old-eggs-directory' or 'old-eggs-remove' set, only reporting Can add it by adding 'old-eggs-directory = ${buildout:directory}/old-eggs' to your [buildout] Found unused egg: webcouturier.dropdownmenu-2.3-py2.6.egg Found unused egg: plone.recipe.command-1.1-py2.6.egg Found unused egg: collective.uploadify-1.0-py2.6.egg Found unused egg: Products.DocFinderTab-1.0.5-py2.6.egg Found unused egg: collective.simplesocial-1.6-py2.6.egg Found unused egg: collective.autopermission-1.0b2-py2.6.egg Found unused egg: Products.Clouseau-1.0-py2.6.egg
详细文档
让我们创建一个鸡蛋用于我们的测试:
>>> mkdir('myegg') >>> write('myegg', 'setup.py', ... ''' ... from setuptools import setup ... setup(name='myegg', version='1.0',) ... ''') >>> write('myegg', 'README', '') >>> print_(system(buildout+' setup myegg bdist_egg')), # doctest: +ELLIPSIS Running setup script 'myegg... ... >>> mkdir('baregg') >>> write('baregg', 'setup.py', ... ''' ... from setuptools import setup ... setup(name='baregg', version='1.0',) ... ''') >>> write('baregg', 'README', '') >>> print_(system(buildout+' setup baregg bdist_egg')), # doctest: +ELLIPSIS Running setup script 'baregg... ...
现在让我们创建一个buildout来安装egg并使用buildout.gc:
>>> write('buildout.cfg', ... ''' ... [buildout] ... index = http://pypi.python.org/simple ... extensions = buildout.gc ... eggs-directory = ${buildout:directory}/eggs ... parts = foo ... find-links += %s ... [foo] ... recipe = zc.recipe.egg ... eggs = myegg ... ''' % join('myegg', 'dist'))
运行构建将打印有关未使用鸡蛋的信息:
>>> print_(system(buildout)), # doctest: +ELLIPSIS Installing foo. Getting distribution for 'myegg'. ... Don't have a 'old-eggs-directory' or 'old-eggs-remove' set, only reporting ...
当我们只想报告未使用的鸡蛋时,我们省略了old-eggs-directory和old-eggs-remove选项。
>>> write('buildout.cfg', ... ''' ... [buildout] ... index = http://pypi.python.org/simple ... extensions = buildout.gc ... eggs-directory = ${buildout:directory}/eggs ... parts = foo ... find-links += %s ... [foo] ... recipe = zc.recipe.egg ... eggs = baregg ... ''' % join('baregg', 'dist'))>>> print_(system(buildout)) # doctest:+ELLIPSIS Uninstalling foo. Installing foo. Getting distribution for 'baregg'. Got baregg 1.0. Don't have a 'old-eggs-directory' or 'old-eggs-remove' set, only reporting Can add it by adding 'old-eggs-directory = ${buildout:directory}/old-eggs' to your [buildout] Found unused egg: myegg... <BLANKLINE>
检查是否确实没有移动或删除任何内容:
>>> assert 'myegg' in ''.join(os.listdir('eggs'))
如果我们想移动未使用的鸡蛋,只需添加一个old-eggs-directory选项并给出一个目录目标:
>>> write('buildout.cfg', ... ''' ... [buildout] ... index = http://pypi.python.org/simple ... extensions = buildout.gc ... eggs-directory = ${buildout:directory}/eggs ... old-eggs-directory = ${buildout:directory}/old-eggs ... parts = foo ... find-links += %s ... [foo] ... recipe = zc.recipe.egg ... eggs = baregg ... ''' % join('baregg', 'dist')) >>> print_(system(buildout)) # doctest:+ELLIPSIS Updating foo. Moved unused egg: myegg... <BLANKLINE>
检查“myegg”是否确实已移动:
>>> assert 'myegg' not in ''.join(os.listdir('eggs')), 'myegg has not been moved out of egg dir' >>> assert 'myegg' in ''.join(os.listdir('old-eggs')), 'myegg has not been moved to old-egg dir'
而且baregg仍然存在:
>>> assert 'baregg' in ''.join(os.listdir('eggs')), 'baregg is not present in egg dir'
如果要删除未使用的鸡蛋,只需添加一个old-eggs-remove选项:
>>> write('buildout.cfg', ... ''' ... [buildout] ... index = http://pypi.python.org/simple ... extensions = buildout.gc ... eggs-directory = ${buildout:directory}/eggs ... old-eggs-directory = ${buildout:directory}/old-eggs ... old-eggs-remove = true ... parts = foo ... find-links += %s ... [foo] ... recipe = zc.recipe.egg ... eggs = myegg ... ''' % join('myegg', 'dist')) >>> print_(system(buildout)) # doctest:+ELLIPSIS Uninstalling foo. Installing foo. Getting distribution for 'myegg'. Got myegg 1.0. Moved unused egg: baregg... <BLANKLINE>
检查“baregg”是否确实已被删除:
>>> assert 'baregg' not in ''.join(os.listdir('eggs')), 'baregg has not been removed' >>> assert 'baregg' not in ''.join(os.listdir('old-eggs')), 'baregg has been moved to old-egg dir'
“myegg”仍然存在:
>>> assert 'myegg' in ''.join(os.listdir('eggs')), 'myegg is not present in egg dir'
贡献者
- Peter Uitenbroek,作者
- 安东·塔古诺夫
更改历史记录
1.2.偏差
- 修复了重新启动BuildOut后的错误消息。
1.0(2016-01-21)
- 创建公共分叉
0.1.5(2012-08-17)
- 重拨文档 [作业]
- 添加了doctest [作业]
0.1(内部释放)
- 创造 [作业]