【发布时间】:2008-09-06 02:22:50
【问题描述】:
如果我要使用 Python 启动一个开源项目,我应该使用哪个版本来确保绝大多数用户可以在他们的系统上使用它?
我是那种会很快跳到下一个版本的人(当 Python 3 出来时我会这样做),但如果他们当前的版本看起来运行良好,很多人可能会更保守。哪个版本会达到最佳效果,但仍能让我享受最新、最酷的语言增强功能?
【问题讨论】:
标签: python compatibility
如果我要使用 Python 启动一个开源项目,我应该使用哪个版本来确保绝大多数用户可以在他们的系统上使用它?
我是那种会很快跳到下一个版本的人(当 Python 3 出来时我会这样做),但如果他们当前的版本看起来运行良好,很多人可能会更保守。哪个版本会达到最佳效果,但仍能让我享受最新、最酷的语言增强功能?
【问题讨论】:
标签: python compatibility
由于 python 正处于向 python 3 的过渡阶段,它打破了向后兼容性,我认为只使用 python 3 不是一个好主意。在time line的基础上,10月2.6/3.0之后至少会有一到两个2.x系列的后续版本。
除了在您的目标平台上没有可用的 python 3 之外,还需要一些时间才能移植重要的外部 python 库并在 python 3 上使用。
因此,正如 Matthew 建议的那样,保持在 2.4/2.5 并牢记transition 对 python 3 的计划是一个不错的选择。
【讨论】:
我已经有一段时间没有看到安装低于 2.3 的系统了。对于我现在使用的大多数操作系统,大多数情况下默认安装 2.4+。 2.3 只是在较旧的 Solaris 机器上。 Linux 发行版往往具有 2.4+,OS X 也是如此。
IIRC,2.4 有很多 2.5 的功能,但只能用于
from __future__ import *
【讨论】:
您可以在每台机器上使用不同版本的 python。
编码一些新的东西,我不会使用低于 python2.5 的任何东西。您可以在股票 debian stable 上执行 apt-get install python2.5。
对于 Windows,不必担心。安装 python2.5 msi 非常容易。
如果用户不愿意这样做,您可以使用 py2exe 部署可执行文件(非常简单)并使用 inno setup 构建安装程序(再次简单),然后它将像标准 Windows 应用程序一样运行并使用它的自己的python dll,所以不需要安装python。
就像 Peter 说的:记住向 3.0 的过渡,但不要在此基础上进行构建。
【讨论】:
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。
【讨论】:
如果该项目将成为主流并在 Linux 上运行,那么唯一明智的选择是 2.4 - 只是因为在 Enterprise Linux 上默认安装其他任何东西是很痛苦的。 p>
无论如何,任何现代操作系统都将/可以拥有 2.4 或更高版本。
【讨论】:
您应该使用 Python 2.7,这是 Python 2 的最终主要版本。
Python 3.x 目前对第 3 方库的支持有限,通常默认不安装。所以你在看 2.x 系列。
Python 2.7 基本上与早期的 2.xs 完全向后兼容。此外,它可以针对在 Python 3 中不起作用的东西给出弃用警告。(特别是,维护单元测试以及对 Unicode 与字节字符串的迂腐是值得的。)警告将迫使你编写好的代码,自动化的2to3 工具将能够转换为 Python 3。
Guido van Rossum officially recommends maintaining a single Python 2 code-base,并使用 2to3 和单元测试为 Python 2 和 3 生成兼容版本。(自从编写 PEP 3000 以来,Python 2.6 已被 2.7 取代。)
【讨论】: