22

我正在用 Python 启动一个新的开源软件,我想知道我应该使用 Python 2.x 还是 Python 3.x。

它将包括一个繁重的 GUI、处理大量数据的复杂科学算法。我至少需要 Numpy、Scipy、PyQT4、PyOpenGL、h5py、可选的 Matplotlib。它应该在 2013 年首次发布,并在接下来的几年内进行更新和扩展。

不一定具有计算机科学背景的科学家将在各种计算机(Linux、Windows、Mac...)上使用它。有些机器可能很旧。

如果我选择 Python 3.x,我担心软件和第三方库的安装可能会更复杂,尤其是在已经安装了 Python 2.x 的旧系统上。如果大多数系统上都可以使用类似 RPM 的 Python 包(或 Windows 安装程序)和外部库,那就更好了,这样就不需要编译所有东西了。另外,我不知道3.x分支是否足够成熟。

如果我选择 Python 2.x,如果 2.x 分支被弃用(什么时候会发生?),我可能需要在不久的将来将软件移植到 Python 3.x。

什么是最好的选择?

4

3 回答 3

13

更新我最初的答案是在 2012 年给出的。然而,多年后的现在,答案应该而且必须是 Python 3


这个 wiki 准确地讨论了您的问题:我应该使用 Python 2 还是 Python 3 进行开发活动?

这是这个问题的一个很大的主观部分,这完全取决于您的具体情况和限制。

但是,IMO,如果您不能确定您需要的所有 3rd 方库都可以使用Python v3.x,我会坚持使用 Python 2.x,但尝试编写尽可能与 Python 3.x 兼容的代码(例如 print() 等),这样如果您需要或想要迁移到 v3,您的工作就不会那么具有挑战性。当然,还有关于从版本 2 迁移到 3的文档和工具。这将 v2 代码移植到 v3

在您无法控制或无法安装较新版本的 Python 或自定义安装 3rd 方软件/库的系统上尤其如此。

鉴于您的软件将在各种系统(Linux、Windows、Mac ..)上运行并且由许多不同的用户运行,我仍然认为 v2 现在更像是一个共同点。

所以,短期注意跨度总结:使用版本 2.x,但为 v3.x 编写代码

最后,如果你把这个搜索字符串“[python] version 3 or 2”放到SO搜索框中,你会发现很多相关的帖子

于 2012-08-13T16:55:32.913 回答
7

Python 3。(这个问题的答案已经改变!)

Python 2 适用于遗留项目。新项目应该倾向于 Python 3。

原因是 Python 3(现在是 3.6)大约每年都会发布一个新版本。它也已经稳定了很多年(已经是第十个发布年了!)。相比之下,Python 2(仍然是 2.7)在过去几年几乎没有变化,并且将继续停滞不前。

欲了解更多信息: https ://wiki.python.org/moin/Python2orPython3/

于 2017-03-14T10:29:15.580 回答
0

我同意列文。

有了这些要求,我还不会冒险从 Python3 开始,但是您应该在编写代码时考虑尽可能多的 Python3 更改。

请参阅此问题编写尽可能接近 Python 3.x 语法的 Python 2.7 代码,因为它可能会帮助您处理一些可用于使您的代码尽可能面向未来的导入和标准。

此外,如果您在各种系统中运行,则需要分发捆绑在应用程序中的 python 版本,或者信任用户的安装。大多数操作系统(非 Windows)都安装了 2.x 版本的 Python,对于非技术用户而言,在不破坏系统的情况下升级到 3.x 并非易事。

于 2012-08-13T17:01:19.917 回答