什么是Python蛋?

问题描述 投票:0回答:4

我试图了解 Python 包是如何工作的。 大概

eggs
是某种打包机制,但是如何快速概述它们所扮演的角色,以及关于它们为何有用以及如何创建它们的一些信息?

python package egg
4个回答
621
投票

*注意:鸡蛋包装已被轮式包装取代。*

与 Java 中的

.jar
文件概念相同,它是一个
.zip
文件,其中一些元数据文件重命名为
.egg
,用于将代码作为捆绑包分发。

具体:Python蛋的内部结构

“Python蛋”是一个逻辑结构,体现了一个 Python 项目的特定版本,包括其代码、资源、 和元数据。有多种格式可用于 对 Python 蛋进行物理编码,并且可以开发其他蛋。然而, Python Egg 的一个关键原则是它们应该是可发现的并且 可导入的。也就是说,Python 应用程序应该可以 轻松有效地找出系统上存在哪些鸡蛋,以及 以确保所需的鸡蛋内容物可以进口。

.egg
格式非常适合分发且易于使用 卸载或升级代码,因为该项目本质上是 自包含在单个目录或文件中,不与任何 其他项目的代码或资源。 这也使得可以拥有 同时安装一个项目的多个版本,这样 各个程序可以选择他们想要使用的版本。


146
投票

.egg
文件是Python包的分发格式。它只是源代码发行版或 Windows
exe
的替代方案。但请注意,对于纯
Python
.egg
文件是完全跨平台的。

.egg
文件本身本质上是一个
.zip
文件。如果将扩展名更改为“
zip
”,您可以看到存档内会有文件夹。

此外,如果您有

.egg
文件,您可以使用
easy_install

将其安装为软件包

示例: 要为目录(例如

.egg
)创建
mymath
文件,该目录本身可能有多个 python 脚本,请执行以下步骤:

# setup.py
from setuptools import setup, find_packages
setup(
    name = "mymath",
    version = "0.1",
    packages = find_packages()
    )

然后,从终端执行:

 $ python setup.py bdist_egg

这将生成大量输出,但是完成后,您将看到有三个新文件夹:builddistmymath.egg-info。我们唯一关心的文件夹是 dist 文件夹,您可以在其中找到

.egg
文件,
mymath-0.1-py3.5.egg
以及默认的 python(安装)版本号(我的版本号是:3.5)

来源:Python库博客


42
投票

免责声明:egg是python包的废弃格式,使用egg的工具已经不存在了。

egg 是一个 python 包。它是一个 zip 存档,包含 python 源文件和/或编译的库。

该格式没有明确规定它必须包含什么内容或如何为不同版本的Python和不同操作系统制作包,这就是它被替换的原因之一。

该格式于 2004 年左右出现,一直使用到 2010 年代中期,已完全被

wheels
pip install
取代。

鸡蛋是通过命令

easy_install
安装的。该命令已在 setuptools v58.3(2021 年)中删除。你不能再用鸡蛋了。

如果您看到任何提及

easy_install
egg
的内容,无论是任何堆栈溢出答案还是教程,它都已经严重过时了。

推荐这个较长的答案https://stackoverflow.com/a/68897551/5994461以深入了解Python打包的历史。它涉及点、轮子、鸡蛋等等。

更新:自 2023 年 7 月起,官方 python 包存储库 pypi.org 不再接受 .egg 包的上传。


6
投票

“Egg”是Python相关项目的单文件可导入分发格式。

“Python Egg 快速指南” 指出 “Eggs 之于 Python 就像 Jars 之于 Java...”

鸡蛋其实比罐子更丰富;它们拥有有趣的元数据,例如许可详细信息、版本依赖项等。

© www.soinside.com 2019 - 2024. All rights reserved.