15

如果我要使用 Python 启动一个开源项目,我应该使用哪个版本来确保绝大多数用户可以在他们的系统上使用它?

我是那种会很快跳到下一个版本的人(当 Python 3 出来时我会这样做),但是如果他们当前的版本看起来运行良好,很多人可能会更加保守。哪个版本会达到最佳效果,但仍能让我享受最新、最酷的语言增强功能?

4

6 回答 6

6

由于 python 正处于向 python 3 的过渡阶段,并且打破了向后兼容性,我认为只使用 python 3 并不是一个好主意。根据时间线,在 10 月的 2.6/3.0 之后,至少会有一到两个 2.x 系列的后续版本。

除了在您的目标平台上没有可用的 python 3 之外,还需要一些时间才能移植重要的外部 python 库并在 python 3 上使用。

因此,正如 Matthew 建议的那样,保持在 2.4/2.5 并牢记向 python 3 的过渡计划是一个可靠的选择。

于 2008-09-06T02:44:31.067 回答
4

我已经有一段时间没有看到安装低于 2.3 的系统了。对于我现在使用的大多数操作系统,大多数情况下默认安装 2.4+。2.3 只是在较旧的 Solaris 机器上。Linux 发行版往往具有 2.4+,OS X 也是如此。

IIRC,2.4 有很多 2.5 的功能,但只能用于

from __future__ import *
于 2008-09-06T02:27:45.163 回答
1

您可以在每台机器上使用不同版本的 python。

编码一些新的东西,我不会使用低于 python2.5 的任何东西。你可以apt-get install python2.5在股票 debian stable 上做。

对于windows,真的不用担心。安装 python2.5 msi 非常容易。

如果用户不愿意这样做,您可以使用 py2exe 部署可执行文件(如此简单)并使用 inno setup 构建安装程序(再次简单),然后它将像标准 Windows 应用程序一样运行,并将使用自己的 python dll ,所以不需要安装python。

就像 Peter 说的:记住向 3.0 的过渡,但不要在此基础上进行构建。

于 2008-09-06T05:25:47.343 回答
1

Python 2.3 或 2.2,如果您可以不添加许多模块(例如 datetime、csv、logging、optparse、zipimport),不使用 SSL,并且愿意为 True/False 添加样板文件。

2.4 添加了装饰器。生成器表达式、reversed()、sorted() 以及 subprocess 和 decimal 模块。尽管这些都很好,但是没有它们很容易编写 Pythonic 代码(假设您的项目不会大量使用它们)。

2.5 增加了,相对进口,更好的 64 位支持,和相当多的速度。你可以很容易地没有所有这些。

2.6 尚未发布(尽管它非常接近),因此虽然它可能会吸引开发人员,但它不具备您所追求的兼容性。

查看 2.3、2.4、2.5 和即将发布的 2.6 的发行说明(使用http://www.python.org/download/releases/2.Y/highlights/,其中“Y”是次要版本)。

FWIW,对于 SpamBayes,我们支持 2.2 及更高版本(2.2 需要单独安装电子邮件包)。这并不过分繁重,但添加的 2.3 已经足够有用,而且 2.3 已经足够老了,我们可能很快就会放弃 2.2。

于 2008-09-07T05:21:11.463 回答
0

如果该项目将成为主流并且将在 Linux 上运行,那么唯一明智的选择是 2.4 - 只是因为在 Enterprise Linux 上默认安装其他任何东西是很痛苦的。

无论如何,任何现代操作系统都将/可以拥有 2.4 或更高版本。

于 2010-01-10T09:36:52.303 回答
0

您应该使用Python 2.7,这是 Python 2 的最终主要版本。

Python 3.x 目前对 3rd-party 库的支持有限,通常默认不安装。因此,您正在查看 2.x 系列。

Python 2.7 基本上与早期的 2.xs 完全向后兼容。此外,它可以针对在 Python 3 中不起作用的东西给出弃用警告。(特别是,维护单元测试以及对 Unicode 与字节字符串的迂腐是值得的。)警告将迫使你编写自动化2to3工具能够翻译成 Python 3 的好代码。

Guido van Rossum官方建议维护一个单一的 Python 2 代码库,并使用 2to3 和单元测试来为 Python 2 和 3 生成兼容的版本。(由于编写了 PEP 3000,Python 2.6 已被 2.7 取代。)

于 2011-10-08T06:40:31.213 回答