除了用于PyPI的tarball,我还应该准备鸡蛋和拉链吗?

时间:2013-01-22 09:32:01

标签: python pip setuptools pypi

我正在使用setuptools等为PyPI准备我的第一个软件包分发。我已经让源代码分发(.tar.gz)运行良好,现在我想知道我是否应该提供任何其他格式,如.zip和.egg。

在随机浏览PyPI时,我注意到一些项目为不同的Python版本提供了鸡蛋以及源代码tarball。我注意到有一两个以.zip形式提供源分发。

上传到PyPI的格式的最佳做法是什么?并且各种安装程序(easy_install,pip)是否优先选择使用哪一个?

2 个答案:

答案 0 :(得分:2)

当前的最佳实践是添加源分布(sdist)和wheel(bdist_wheel)。例如,看看numpy做什么。

如果要构建的东西,可以通过提供轮子来为用户省去很多麻烦。比较带轮子和不带轮子的numpy的安装(例如,通过安装他们没有为您的python版本创建轮子的版本):没有轮子,您需要安装Fortran编译器和Blas库并可用。没有它,您甚至不必知道numpy使用Fortran。

如果您有pure Python package,则转轮格式仍然具有可以通过简单地将代码复制到正确位置来安装的优点。我不确定这个优势有多大

另请参阅:https://packaging.python.org/guides/distributing-packages-using-setuptools/#wheels

答案 1 :(得分:1)

如果您没有构建C扩展,请以tar.gz格式发送源tarball。它可以安装在所有平台上。如果您构建C扩展并且您的软件在Windows上运行,因为人们很少在其计算机上安装C编译器,则只需要一个二进制蛋(可以通过easy_install,而不是pip安装)。