首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >“sdist”.tar.gz发行版和巨蟒蛋有什么不同?

“sdist”.tar.gz发行版和巨蟒蛋有什么不同?
EN

Stack Overflow用户
提问于 2011-06-09 20:17:13
回答 2查看 20.4K关注 0票数 51

我有点困惑。似乎有两种不同的Python包,源代码发行版(setup.py sdist)和egg发行版(setup.py bdist_egg)。

两者似乎都是包含相同数据的归档文件,即python源文件。一个不同之处在于,最受推荐的包管理器pip不能安装eggs。

这两者之间的区别是什么?分发我的软件包的“正确”方式是什么?

(注意,我不想通过PyPI分发我的包,但我想使用一个从PyPI获取依赖项的包管理器)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-09 20:35:16

setup.py sdist创建一个源代码分发:它包含setup.py、模块/脚本的源文件(.py文件或二进制模块的.c/.cpp )、数据文件等。

setup.py bdist (和bdist_*)创建了一个构建的发行版:它包括.pyc文件,.so/.dll/.dylib用于二进制模块,.exe如果在Windows上使用py2exe,你的数据文件...但是没有setup.py。结果是一个特定于某个平台(例如linux-x86_64)和某个Python版本的归档,只需将其解压缩到文件系统的根目录中(可执行文件位于/usr/bin (或等效文件)中,数据文件位于/usr/share中,模块位于/usr/lib/pythonX.X/site-packages/...)。您甚至可以构建可以使用包管理器直接安装的rpm归档。

票数 67
EN

Stack Overflow用户

发布于 2011-06-09 20:22:47

Python2021更新:构建和使用鸡蛋的工具在中不再存在。

不只是两种不同的Python (发行版)包。此命令列出了许多子命令:

$ python setup.py --help-commands

注意各种不同的bdist类型。

egg是一种新的包类型,由setuptools引入,但后来被标准库采用。它将被整体安装到sys.path上。这与sdist包不同,sdist包意味着运行setup.py install,将每个文件复制到适当的位置,并可能采取其他操作(构建扩展模块,运行包中包含的额外任意Python代码)。

鸡蛋在这一点上基本上已经过时了。编辑:鸡蛋消失了,它们是通过命令"easy_install“使用的,这个命令已经从Python语言中删除了。

现在最受欢迎的打包格式是"wheel“格式,特别是"pip install”使用的格式。

是否创建sdist或egg (或轮子)与您是否能够声明包具有哪些依赖项(将在安装时由PyPI自动下载)无关。要让这个依赖特性起作用,您只需使用由distribute (setuptools的后继者)或distutils2 ( distutils的后继者-在Python3.x的当前开发版本中称为打包)提供的额外API来声明依赖项。

有关打包的更多信息,https://packaging.python.org/是一个很好的资源。它涵盖了声明依赖项的一些细节(例如install_requires,但不包括extras_require afaict)。

票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6292652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档