什么是Python蛋?

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


#1楼

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

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

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

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

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


#2楼

.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图书博客


#3楼

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

“Python鸡蛋快速指南”指出, “鸡蛋对于蟒蛇来说就像罐子里的Java一样......”

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


#4楼

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

安装和使用Python egg的最简单方法是使用“Easy Install”Python包管理器,它将为您查找,下载,构建和安装鸡蛋; 您所要做的就是告诉它您想要使用的Python项目的名称(以及可选的版本)。

Python egg可以与Python 2.3及更高版本一起使用,并且可以使用setuptools包构建(请参阅Python Subversion沙箱获取源代码,或使用EasyInstall页面获取当前安装说明)。

Python Eggs的主要好处是:

  • 他们启用了像“Easy Install”Python包管理器这样的工具

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

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

  • 它们允许“名称空间包”(仅包含其他包的包)被拆分为单独的发行版(例如zope。 ,twisted。 ,peak。*包可以作为单独的蛋分发,不像普通包必须始终放在相同的包下父目录。这允许现在巨大的单片包作为单独的组件分发。)

  • 它们允许应用程序或库指定所需的库版本,因此您可以在执行twisted.internet导入之前例如要求(“Twisted-Internet> = 2.0”)。

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

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

发布了0 篇原创文章 · 获赞 2 · 访问量 4990

猜你喜欢

转载自blog.csdn.net/asdfgh0077/article/details/104029019
今日推荐