将未使用的鸡蛋移动到指定目录的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 If语句   java如何在Spark中使用两个“条件”进行过滤?   雅加达ee为ColdFusion提供的最佳Java ee服务器   java如何在jersey的MessageBodyWriter方法中获取writeTo中的anotations值?   java从脚本文件调用jar文件中的函数   java在执行insert语句后,如何获得id值为的语句?   在OS X上设置OpenCV Java绑定   java使用for循环遍历数组x。以字符串形式返回x的元素,其中每个元素由一个空格分隔   ApacheiClientBuilder为Algolia Java创建的APIClient是线程安全的吗?   java在DFS/BFS算法中获取邻居时避免内存分配?   java使用AES/CBC/PKCS5P加密大文件(2GB)   允许保存/加载列布局的Java DB网格组件   队列大小为1的java Spring调度   跑步带有Java参数的exe   java正则表达式将所有“<”和“>”标记替换为“&lt;”及“&gt;”在<<![CDATA]>标签?   java何时同步变量?