跳转到主要内容

创建已安装包的统一目录结构,通过符号链接到实际内容,以简化导航。

项目描述

详细文档

简介

命名空间包可以以小而自包含的部件形式分发大型系统的一部分,这带来了巨大的好处。然而,它们在导航时可能有点笨拙,因为你在 egg 缓存中会有一个长长的 egg 列表,然后需要打开一系列看似无尽的目录才能找到 egg 的内容。

此配方设置了一个目录结构,该结构反映了实际的 Python 命名空间,并带有指向 egg 内容的符号链接。因此,你得到的是...

egg-cache/
    my.egg.one-1.0-py2.7.egg/
        my/
            egg/
                one/
                    (contents of first egg)
    my.egg.two-1.0-py2.7.egg/
        my/
            egg/
                two/
                    (contents of second egg)

…而不是这个

omelette/
    my/
        egg/
            one/
                (contents of first egg)
            two/
                (contents of second egg)

你还可以在 omelette 中包含未 egg 化的 Python 包。这使得添加到你的 PYTHONPATH 中以用于专用 Python 环境变得简单,例如在 mod_wsgi 或 PyDev 下运行时。

与 Zope 和 Plone 的典型用法

对于典型的 Plone buildout,其中有一个名为“instance”的部分使用 plone.recipe.zope2instance 配方,以及一个名为“zope2”的部分使用 plone.recipe.zope2install 配方,以下 buildout.cfg 的添加将导致一个包含所有 eggs 和旧式 Products 的 omelette,这些 Products 被 Zope 实例使用,以及 Zope 的 lib/python 中的所有包。如果想要找到所有内容,omelette 需要在最后

[buildout]
parts =
    ...(other parts)...
    omelette

...

[omelette]
recipe = collective.recipe.omelette
eggs = ${instance:eggs}
products = ${instance:products}
packages = ${zope2:location}/lib/python ./

(注意:如果你的实例部分缺少“products”变量,请在 omelette 部分中也省略它,否则 omelette 将静默失败构建。)

支持的选项

该配方支持以下选项

eggs

应包含在 omelette 中的 egg 列表。

location

(可选)覆盖创建 omelette 的目录(默认为 parts/[buildout part 名称])

ignore-develop

(可选)忽略你目前正在开发的 eggs(列在 ${buildout:develop} 中)。默认为 False

ignores

(可选)在准备 omelette 时要忽略的 eggs 列表。

packages

应包含在 omelette 中的 Python 包的内容列表。每行应采用以下格式 [package_location] [target_directory],其中 package_location 是包的真实位置,target_directory 是包应插入到 omelette 中的位置(默认为 Products/)。

products

(可选)应包含在 omelette 中的旧 Zope 2 风格产品目录的内容列表,每行一个。(为了向后兼容 - 与使用以 Products 为目标目录的 packages 相当。)

在 Python 2.7 下的 Windows 支持

在 Windows 上使用 Python 2.7 的 omelette 需要 junction 工具来创建链接。Junction.exe 必须在运行 omelette 时出现在你的 PATH 中。

从 Python 3.2 开始,这不再需要。

使用 eggtractor 使用 omelette

Mustapha Benali 的 buildout.eggtractor 为 buildout 提供了一种方便的方法来自动查找开发 eggs,而无需编辑 buildout.cfg。但是,如果你使用它,omelette 配方将不知道你的 eggs,除非你 a) 手动将它们添加到 omelette 部分的 eggs 选项中,或者 b) 将 omelette 部分的名称添加到 buildout 部分的 tractor-target-parts 选项中。

使用 zip eggs 使用 omelette

Omelette 目前不知道如何处理 zip eggs。如果它遇到一个,你会看到一个类似于以下警告的信息

omelette: Warning: (While processing egg elementtree) Egg contents not found at
/Users/davidg/.buildout/eggs/elementtree-1.2.7_20070827_preview-py2.4.egg/elementtree.  Skipping.

你可以通过在 [buildout] 部分中设置 unzip = true 标志来告诉 buildout 解压所有 eggs。请注意,这将仅对设置标志之后下载的 eggs 产生影响。

运行测试

只需从 git 中获取配方并运行

tox -p auto

已知问题:测试以单独的进程运行 buildout,因此目前无法在配方中放置 pdb 断点并在测试期间进行调试。如果您需要这样做,请设置另一个 buildout,该 buildout 安装 omelette 部分,并将 collective.recipe.omelette 作为开发蛋包含在内。

报告错误或提出问题

GitHub 上有一个错误跟踪器:https://github.com/collective/collective.recipe.omelette/issues

变更历史

1.1.0 (2021-12-01)

  • 修复 2to3 旧的 setuptools 钩子 [goschtl]

  • 将代码现代化到 python3 [goschtl]

  • 更新到新的 zope.testing [goschtl]

  • 使用 pytest 和 tox [goschtl]

  • 注意:在 Python 2.7 和 3.6-3.10 上进行了测试。

1.0.0 (2020-08-03)

  • 修复以在 Windows 下使用 Python 3 运行。[nilshofer, jensens]

0.16 (2013-02-18)

  • 修复打包错误。[davisagli]

  • 修复测试以与 buildout 2 兼容。[davisagli]

0.15 (2012-05-12)

  • 集成 Travis CI 以运行测试和 pep8/pyflakes。[hvelarde]

  • PEP 8/Pyflakes。[hvelarde]

  • 优化 Windows 上联合目录的解除链接。[lck]

0.14 (2012-04-30)

  • 更改在 Windows 上使用 NTFS 联结点构建 omelette 的方法。现在这是通过 ntfsutils 包完成的,而不是依赖于 junction.exe。[lck]

0.13 (2012-04-14)

  • 增加了与 Python 3 的向前兼容性。[mitchell]

0.12 (2011-09-08)

  • 用 subprocess 的等效项替换 os.popen [tom_gross]

  • 在 Windows 上引用路径以正确处理包含空格的路径 [tom_gross]

0.11 (2011-07-18)

0.10 (2010-11-22)

  • 提供一个更新函数(相当于安装),以避免出现“recipe “不定义更新方法”的虚假警告。[davisagli]

  • 如果 Windows 上缺少 junction.exe,则打印警告而不是终止 buildout。[davisagli]

  • 使测试与使用 Distribute 而不是 Setuptools 安装的 zc.buildout 兼容。[pumazi]

  • 在符号链接上处理 OSError 并警告用户。MacOSX 可以由于此处存在现有文件而引发 OSError,即使 os.path.exists 返回 False。[MatthewWilkes]

  • 在 omelette 中包含命名空间包的模块。(命名空间包不能在 __init__.py 中定义任何内容,但它们可以包含模块。)[hathawsh]

  • 使测试与 virtualenv 兼容。[hathawsh]

0.9 (2009-04-11)

  • 调整日志级别,以使非关键错误略微不那么冗长。[malthe]

0.8 (2009-01-14)

  • 修复了 zipped eggs 上的“OSError [Errno 20] 不是目录”,例如当添加 z3c.sqlalchemy==1.3.5 egg 时。[maurits]

0.7 (2008-09-10)

  • 实际上在生成的 __init__.py 文件中添加了命名空间声明。[davisagli]

  • 使用 egg-info 而不是从包名猜测路径。这也修复了具有与内容不同的名称的 eggs。[fschulze]

0.6 (2008-08-11)

  • 仅文档更改。[davisagli]

0.5 (2008-05-29)

  • 添加了卸载条目,以便可以在 Windows 上卸载 omelette 而不会损坏 omelette 路径之外的内容。[optilude]

  • 支持使用 NTFS 联结点使用 Windows(请参阅 http://www.microsoft.com/technet/sysinternals/FileAndDisk/Junction.mspx)[optilude]

  • 忽略 zipped eggs 和 fakezope2eggs 创建的链接。[davisagli]

  • 添加了“packages”选项,允许将未打包的 Python 包合并到 omelette 中的任何目录(例如,Zope 的 lib/python 的内容可以灵活合并)。[davisagli]

0.4 (2008-04-07)

  • 添加了包括 Products 目录的选项。[davisagli]

  • 修复了 ignore-develop 选项。[davisagli]

0.3 (2008-03-30)

  • 修复了测试基础设施。[davisagli]

  • 添加了忽略 develop eggs 的选项 [claytron]

  • 添加了忽略 eggs 的选项 [claytron]

  • 添加了覆盖默认 omelette 位置的选项 [davisagli]

0.2 (2008-03-16)

  • 修复了创建的目录不会被规范为小写。[davisagli]

0.1 (2008-03-10)

  • 初始基本实现。[davisagli]

  • 使用 ZopeSkel 创建了配方。[davisagli]

贡献者

  • David Glick [davisagli]

  • Clayton Parker [claytron]

  • Martin Aspeli [optilude]

  • Florian Schulze [fschulze]

  • Maurits van Rees [maurits]

  • Malthe Borch [malthe]

  • Matthew Wilkes [MatthewWilkes]

  • Michael Mulich [pumazi]

  • Shane Hathaway [hathawsh]

  • 莱昂纳多·罗查尔·阿尔梅达 [LeoRochael]

  • 汤姆·格罗斯 [tom_gross]

  • 理查德·米切尔 [mitchell]

  • 罗马·拉科 [lck]

  • 埃克托·韦尔达 [hvelarde]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

collective.recipe.omelette-1.1.0.tar.gz (18.4 kB 查看哈希值)

上传时间 源代码

构建分发

collective.recipe.omelette-1.1.0-py3-none-any.whl (17.8 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面