什么是Python蛋?

时间:2010-01-12 18:05:29

标签: python egg

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

4 个答案:

答案 0 :(得分:478)

  

注意:Egg packaging has been superseded by Wheel packaging.

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

Specifically: The Internal Structure of Python Eggs

  

“Python egg”是体现a版本的逻辑结构   特定版本的Python项目,包括其代码,资源,   和元数据。有多种格式可供使用   物理编码一个Python蛋,其他人可以开发。然而,   Python蛋的一个关键原则是它们应该是可被发现的   可导入。也就是说,Python应用程序应该可以   轻松有效地找出系统中存在的鸡蛋,以及   确保所需的鸡蛋内容是可输入的。

     

.egg格式非常适合分发和简单   卸载或升级代码,因为项目本质上是   自包含在单个目录或文件中,与任何内容无关   其他项目的代码或资源。它也使它成为可能   同时安装了多个版本的项目,这样   个别程序可以选择他们希望使用的版本。

答案 1 :(得分:59)

.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

这将生成大量输出,但是当它完成后,您将看到三个新文件夹: build dist ,和 mymath.egg-info 。我们关心的唯一文件夹是 dist 文件夹,您可以在其中找到您的.egg文件, mymath-0.1-py3.5.egg 与您的默认python(安装)版本号(我的:3.5)

来源:Python library blog

答案 2 :(得分:2)

Python蛋是将附加信息与Python项目捆绑在一起的一种方式,它允许在运行时检查和满足项目的依赖关系,并允许项目为其他项目提供插件。有几种包含鸡蛋的二进制格式,但是最常见的是'.egg'zipfile格式,因为它是分发项目的便捷方式。所有格式都支持,包括特定于软件包的数据,项目范围的元数据,C扩展和Python代码。

安装和使用Python egg的最简单方法是使用“简易安装” Python软件包管理器,它将为您查找,下载,构建和安装egg;您要做的就是告诉它要使用的Python项目的名称(或版本)。

Python鸡蛋可以与Python 2.3及更高版本一起使用,并且可以使用setuptools软件包进行构建(有关源代码,请参见Python Subversion沙箱;有关当前安装说明,请参见EasyInstall页面)。

Python Eggs的主要好处是:

  • 它们启用“轻松安装” Python软件包管理器之类的工具

  • .egg文件是Python软件包的“零安装”格式;无需构建或安装步骤,只需将它们放在PYTHONPATH或sys.path上并使用它们即可(如果使用C扩展名或数据文件,则可能需要安装运行时)

  • 它们可以包含包元数据,例如它们依赖的其他鸡蛋

  • 它们允许将“命名空间包”(仅包含其他包的包)拆分为单独的分布(例如zope。,twisted。,peak。*)。鸡蛋,与通常必须始终放在同一父目录下的普通软件包不同。这允许将如今庞大的整体软件包作为单独的组件分发。)

  • 它们允许应用程序或库指定所需的库版本,以便例如进行导入twisted.internet之前,require(“ Twisted-Internet> = 2.0”)。

  • 它们是一种将扩展或插件分发到可扩展的应用程序和框架的好格式(例如Trac,从0.9b1开始,它使用鸡蛋作为插件),因为egg运行时提供了简单的API来查找鸡蛋和查找它们的广告入口点(类似于Eclipse的“扩展点”概念)。

标准化格式还有其他好处,类似于Java的“ jar”格式。

答案 3 :(得分:1)

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

"The Quick Guide to Python Eggs"注意到“鸡蛋是蟒蛇,因为罐子是Java ......”

鸡蛋实际上比罐子更丰富;他们拥有有趣的元数据,如许可细节,发布依赖等等。