3

当我发布一个程序时,我通常只是创建一个 setup.py 并将其放在 pypi 上。它可以用 pip 安装,我总是可以轻松地与他人分享。它适用于我,显然适用于很多人。

我看到了制作 exe、deb 或 rmp 以简化系统管理员的好处。

但我真的不明白使用鸡蛋的意义。你能告诉我我能从中得到什么吗?

我也曾经读过鸡蛋有缺点,但我再也找不到这篇文章了。您能否向我描述一下使用这种包装格式会导致什么问题?

请注意,我确实看到了这个问题,但答案也适用于 setup.py 的简单目录。它并没有告诉我鸡蛋相对于简单格式的好处。

4

2 回答 2

3

Eggs 与特定的架构和 python 版本相关联,直到 Python 3.3,如果 egg 包含 C 扩展,甚至是内部 Unicode 表示大小(UCS2 与 UCS4)。

不幸的是,后者的差异并没有体现在 egg 元数据中。egg 文件名包含架构和 python 版本(major.minor,所以 2.4 或 3.1),但省略了 unicode 字节大小。

正因为如此,鸡蛋不是很便携。另一方面,A.tgz或发行版(希望)与平台无关。.zip您的安装工具,无论是、easy_install或其他什么,都知道如何为您将 python 包分发编译成一个 egg,因此您通常避免完全分发文件。pipbuildout.egg

The only exception is Windows, where most people will be lacking the toolchain to compile C extensions. As Windows distributions of Python default to UCS2, you are usually safe to distribute Windows .egg builds of packages with C extensions, to facilitate installation by automated tools.

If you use the setup.py script to create the distribution, it's trivial to create a source-only package for upload to PyPI. I can recommend the Python Packaging User Guide for more information.

于 2012-09-05T09:41:15.077 回答
1

*.egg 是一种纯部署格式,在通过 easy_install 或 pip 安装软件包后使用。

将文件作为 .egg 上传到 PyPI 是没有意义的。这样做的人不知道他们在做什么。

正确的 PyPI 版本可以是 .tar.gz 存档,也可以是 .zip 存档或 .exe 文件(例如用于 Windows 二进制文件),但绝不是 *.egg 文件。

于 2012-09-05T09:24:48.313 回答