630

我是 Python 新手,我只是想了解它的包是如何工作的。大概eggs是某种包装机制,但是什么是它们所扮演角色的快速概述,可能是关于它们为什么有用以及如何创建它们的一些信息?

4

4 回答 4

579

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

.jar与Java 中的文件概念相同,它是一个.zip包含一些元数据文件的文件.egg,用于将代码作为包分发。

具体来说:Python Eggs 的内部结构

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

.egg格式非常适合分发和代码的轻松卸载或升级,因为该项目本质上是独立的,包含在单个目录或文件中,与任何其他项目的代码或资源不混合。它还可以同时安装一个项目的多个版本,以便各个程序可以选择他们希望使用的版本。

于 2010-01-12T18:06:42.707 回答
124

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

.egg文件本身本质上是一个文件.zip。如果您将扩展名更改为“<code>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 库博客

于 2016-06-13T22:43:38.293 回答
2

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

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

鸡蛋实际上比罐子更丰富;它们包含有趣的元数据,例如许可详细信息、发布依赖项等。

于 2018-02-26T05:26:14.780 回答
1

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

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

该格式没有很好地说明它必须包含什么或如何为不同版本的 python 和不同的操作系统制作包,这就是它被替换的原因之一。

该格式出现在 2004 年左右,一直使用到 2010 年代中期,它已完全被wheelsand取代pip install

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

如果您看到任何提及easy_install或的内容egg,无论是任何堆栈溢出答案或教程,它都已严重过时。

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

于 2021-11-18T12:10:23.537 回答