python - 'sdist' .tar.gz 分布和 python 鸡蛋有什么区别?

标签 python egg sdist

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

两者似乎只是具有相同数据的存档,即 python 源文件。一个区别是,最推荐的包管理器pip不能安装eggs。

两者之间有什么区别,分发我的包的“方法”是什么?

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

最佳答案

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 存档。

关于python - 'sdist' .tar.gz 分布和 python 鸡蛋有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6292652/

相关文章:

python - 导入 BitTorrent Bencode 模块

python - python setup.py sdist bdist_wheel 的输出目录

python - pandas to_excel() 使用 float_format 参数 --> ValueError : could not convert string to float

python - 在 matplotlib 中调整/拉伸(stretch) 2d 直方图的大小与 x-y 相关的箱数?

python - 在不全局安装的情况下使用 Python 库

python - 如何在不安装的情况下直接运行 Python Egg 文件?

python - 运行 sDist 来构建包并安装会创建空的构建目录

python - 即使在 Linux 上也强制 `sdist` 创建 .zip 存档

python - 查找字符串中相同的部分

python - python单元测试中setUp/tearDown的顺序是什么?