2010-01-12 129 views
383

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

回答

423

注:Egg packaging has been superseded by Wheel packaging.

相同的概念为.jar文件在Java中,它是一个.zip文件的一些元数据文件改名为.egg,分发代码包。

Specifically: The Internal Structure of Python Eggs

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

.egg格式非常适合于分布和容易 卸载或代码升级,因为该项目基本上是 自足一个单一的目录或文件,unmingled与任何 其他项目的代码或资源的范围内。它还可以同时安装一个项目的多个版本,以便个别程序可以选择他们希望使用的版本。

32

.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 

这会产生大量的输出,但是当它完成,你会看到,你有新的文件夹:构建DISTMYMATH。egg-info。我们关心的唯一文件夹是DIST文件夹,你会发现你.egg文件,mymath-0.1-py3.5.egg与默认的Python(安装)版本号(我在这里:3.5)

来源:Python library blog

0

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

"The Quick Guide to Python Eggs"指出,“鸡蛋是蟒蛇的罐子到Java ......”

鸡蛋居然比罐子更丰富;他们持有有趣的元数据,如许可细节,发布依赖关系等。