将未使用的鸡蛋移动到指定目录的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我是否需要构造一个带有*非final*但不可变字段的不可变类?   java如何使用jaxb读取属性?   java为什么不打印空值以外的任何内容?   java Struts2如何在不使用struts的情况下重定向到操作。xml?   java方法参数未在其实现中使用   在Java中更改终端内部的变量   Spring中的java依赖项注入失败   java如何使用getAttribute Selenium防止获取重复的HREF   优先级队列的java顺序不符合预期   java如何使用Spring TaskExecutor在应用程序的所有请求中使用单个任务池   java Firebase RecyclerView不会从数据库中检索项目并将其显示在屏幕上。屏幕是空的   java将YUV_420_888转换为字节数组   spring停止使用Java缓存文件   java在执行maven clean安装时,我在eclipse智能家居中遇到了这种错误   stream Java=下载缓冲区未满?冲洗/缓冲是如何工作的?   查询SQL server时重置java JDBC连接   java如何避免在两个函数中使用相同的逻辑。   转换java。lang.Boolean到Scala Boolean