在多个操作系统上创建Python发行版(eggs)的最佳实践是什么

2024-10-01 07:25:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我们是一家Python店。我们内部开发了不同的python包,并将部署到客户的环境(机器)上。在

我们的开发和发布周期就是这样发生的。在

一旦开发人员完成了一个包的“测试”,这个包的一个发行版(egg文件)就准备好了,并被推送到一个中央归档位置。当我们想向客户部署软件时,相同的发行版(egg文件)将被下载并安装到他们的环境中。在

假设“测试”在多个操作系统上进行(以检查API跨平台的兼容性),那么准备发行版并将其推送到中央归档位置的最佳做法是什么。在

最好在存档服务器上有特定于操作系统的eggs(例如samplepkg-1.0.0.win32.egg和samplepkg-1.0.0)。linux.egg版? 不确定如何使用setuptools以这种方式进行准备。)或者因为跨平台的API保持不变而拥有一个鸡蛋?社区有没有其他的做法?在


Tags: 文件服务器机器api客户软件环境开发人员
3条回答

平台特定的eggs只用于分发包含C代码的包;否则egg文件本身是平台独立的,您只需要分发一个平台无关的egg。在

如果您正在使用自动安装工具或pkg_resources的运行时API来查找库和插件,那么您实际上可以将所有的egg转储到一个目录中,安装工具或运行时API将选择从哪个egg安装或导入。在

dr版本:setuptools构建egg的方式就是它们应该采用的分发方式;如果您试图将一个跨平台的egg变成一个依赖于平台的egg,反之亦然,您可能会遇到一些痛苦。;—)

在以下情况下,您可以使用单个软件包:

  1. 这个包不使用在所有目标平台上都不可用的函数/类(参见Python标准库参考2.7.2第36-39章,了解在这种情况下不应该使用的内容)
  2. <>你没有使用C/C++编写的扩展,需要为每个平台编译。在

一般来说,最好不要使用在所有目标平台上都可用的特定于操作系统的功能。标准库在这方面有很好的文档记录。在

我认为在这种情况下,由于罗兰提到的原因,使用一个单独的软件包会更加复杂。在开发环境中,可以为单独的平台提供单独的文件夹,每个平台都具有特定于平台的代码(例如用C/C++编写的扩展/库)。您需要在这些文件夹中模仿您的setuptools来生成单独的鸡蛋,但最终要比将所有东西放在一个包中要简单得多(我认为,在不了解您实际使用的代码的情况下)。在

在这两种情况下,阅读标准库的文档以及distutils(http://docs.python.org/distutils/)都可以帮助您找到解决方案。在

相关问题 更多 >