Syseggrecipe 允许在buildout安装中重用系统eggs
项目描述
描述
Buildout 对于重复构建Python包来说很棒。它从Pypi(Python包索引)抓取了一大批包,然后你就完成了。纯Python包没问题。但有时有些包可能有点难。
一些包需要相当多的库可用,最好是作为开发包。在Debian/Ubuntu术语中,这些是 *-dev 包。这些包包含C代码或基于现有库构建。总的来说,这有时是通过您的操作系统提供更好的功能。谁想手动构建“numpy”?使用 aptitude install python-numpy 并自动获取所有依赖项会更好。
《syseggrecipe》构建配方提供了一种方便的方法来重用那些完美包装的“系统蛋”。它们已经存在,为什么不使用它们呢?我们知道构建工具最好用于自己收集所有内容,但存在实际限制。有时系统蛋更方便。
《syseggrecipe》配方允许您指定要从您的操作系统中抓取哪些蛋,并将这些蛋注入您的构建工具中,这样您就可以在不拉取系统路径上的所有内容的情况下使用它们。
示例
此配方使用示例。请注意,sysegg配方必须是构建工具的第一个部分,以确保它首先尝试获取全局蛋。
[buildout] parts = sysegg [sysegg] recipe = syseggrecipe eggs = netCDF4
要停止构建工具,直到所有syseggs都安装完毕,请包含force-sysegg = true
[buildout] parts = sysegg [sysegg] recipe = syseggrecipe force-sysegg = true eggs = netCDF4
这样,指定的蛋必须全局安装。否则它们是可选的(这也许是一个不错的选择)。
它是如何工作的
系统核心是构建工具的“开发蛋”概念。这是一个特殊目录(您的构建工具中的develop-eggs/),其中包含指向当前正在开发的Python包的指针。这些指针优先于任何其他项。例如,包括您正在工作的项目,以及您使用mr.developer安装的项目。
对于部分中指定的每个蛋,setuptools都会询问匹配的分发。如果找到匹配项,它就会被插入到开发蛋目录中。有两种方式
如果它是一个合适的蛋,将在develop-eggs/目录中创建一个名为EGGNAME.egg-link的文件,该文件指向正确的蛋。
如果它不是一个真正的蛋,将寻找匹配的EGGNAME*.egg-info文件或目录,并将其符号链接到develop-eggs/目录中。
两种方式都足以让setuptools知道全局蛋的存在。由于构建工具不会删除系统路径(除了1.5/1.6/1.7版本的不完整发布),setuptools可以在全局找到它们。我们只需确保它知道如何找到它们。
起源
此包是基于(并在osc.recipe.sysegg上进行了改进的)的一个分支。因此,它遵循MIT许可证。
变更日志
1.5.1 (2015-10-27)
为1.5的功能添加了一些额外的日志记录。[reinout]
1.5 (2015-10-27)
如果找不到包,有时只是缺少一个*.egg-info文件。就像ubuntu,它丢失了mapnik的egg-info文件,尽管mapnik本身已经安装。
我们现在尝试导入这样的包(简单地使用包名),如果找到,则使用其安装的目录。注意:包名可能不是一个有效的导入名。可能需要添加对边缘情况的支持。[reinout]
1.4 (2015-06-08)
我们现在还可以找到pip安装的包(以.dist-info结尾)。[Olivier Bornet添加了支持,谢谢!]
1.3 (2014-11-18)
修复了错误:在日志消息中使用%S而不是(小写)%s。如果您遇到此错误(只在边缘情况下发生),您将得到一个ValueError: unsupported format character in recipe.py。
1.2 (2014-03-19)
使用os.path.lexists()而不是os.path.exists(),这个函数返回True,如果有一个指向无处的符号链接。函数exists()遵循符号链接,因此对于损坏的符号链接返回False。在我们的情况下,这意味着损坏的符号链接不会被删除,因此随后的新符号链接创建失败,因为文件名已被使用。修复了#3。
1.1 (2014-03-19)
添加了Python 2.6兼容性。
补偿包含下划线字符的包,例如 MySQL_python。(均为 benwah 修复,感谢!)
1.0.1 (2013-09-17)
快速修复 buildout rmtree 无法删除 egg 信息/链接文件的问题。
1.0 (2013-09-11)
由于现在稳定,已重新发布为 1.0 版。
0.4 (2013-09-10)
返回符号链接而不是复制:一些 egg-info 文件实际上是目录。缺点:Windows 又被排除在外。
0.3 (2013-09-10)
我们现在报告添加到 buildout 的文件,以便 buildout 自动为我们清理它们。我们的 develop-eggs 目录不再有污染!
我们发现系统目录中非 egg 分发的文件夹的符号链接是一个坏主意。一些分发安装文件而不是目录(例如,GDAL 最终变为 gdal.py)。我们现在只复制“egg-info”文件,这对于 setuptools 找到分发来说已经足够了。
复制(见上文)而不是符号链接意味着它也适用于 Windows。
0.2 (2013-09-10)
修复 README 以独立运行 sysegg。
直接位于 sys.path 目录中的非 egg 分发,其位置为实际系统文件夹。这曾经意味着该系统文件夹中的所有内容都可能被错误地用作系统 egg。不再如此,因为这些目录现在是直接符号链接,而不是通过过于通用的 .egg-link 文件使用。
此配方使用符号链接进行上述修复,这意味着它不再适用于 Windows。
0.1 (2013-02-05)
修补代码以允许强制 sysegg=false
添加来自 osc.recipe.sysegg 的原始代码。
添加 buildout 和 setup.py。
添加了 README、更改和 MIT 许可证。
项目详情
syseggrecipe-1.5.1.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | f7cd7a2feb74291733026e66678f5d0833230e101088a5b6366b4ea3baadb715 |
|
MD5 | 7d4826fcddddec619a20be4fc03684c5 |
|
BLAKE2b-256 | 900aa20c126a1b718f8f34d8a3a48e737b20d10e66a99c87abb8071183e93ab5 |