将未使用的鸡蛋移动到指定目录的buildout扩展

buildout.gc的Python项目详细描述


构建垃圾收集器

简介

gc扩展可用于确保egg目录只包含“used”eggs。 扩展可以报告、将未使用的鸡蛋移动到指定的目录或只是删除egs。

这个包裹是https://github.com/thepjot/buildout.eggscleaner

安装

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-directoryold-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(内部释放)

  • 创造 [作业]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类