我有点困惑。似乎有两种不同类型的 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/