创建已安装包的统一目录结构,通过符号链接到实际内容,以简化导航。
项目描述
详细文档
简介
命名空间包可以以小而自包含的部件形式分发大型系统的一部分,这带来了巨大的好处。然而,它们在导航时可能有点笨拙,因为你在 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)
对 top_level 元数据进行排序以避免由于顺序错误而构建 omelette 时出错。修复了 https://bugs.launchpad.net/collective.buildout/+bug/553005。感谢 Leonardo Rochael Almeida。[davisagli]
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]
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源代码分发
构建分发
哈希值 for collective.recipe.omelette-1.1.0-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a55f16b7eb95765afeb03a0cee36a76b57f5333cfc3fdae03ae29e7373b98266 |
|
MD5 | 691d1f56d1b254f39d30eaedb7783094 |
|
BLAKE2b-256 | eb6397c42920ac13624a6699b7014bfea6d4906882711f1e69245dd5b38576d0 |