新项目:Python 2 还是 Python 3?

21

我正在用 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 包(或 Windows 安装程序)能够在大多数系统上提供 Python 和外部库的安装,这样就不需要编译所有的东西。此外,我不知道 3.x 分支是否足够成熟。

如果选择 Python 2.x,将来如果 2.x 分支停止维护了,我可能需要将软件移植到 Python 3.x。

哪个选项最好呢?


3
在这些依赖项中,我认为只有PyOpenGL尚未移植。Matplotlib已经移植了,但尚未发布,不过发布日期预计在几个月后。其他的依赖项(numpy、scipy、PyQt4、h5py)已经有Python 3版本的发布了。 - Thomas K
一个月内就会有Python 3.3版本。到2013年,Python 3.4版本将会发布,而2.7版本则进入维护模式。顺便提一下,对于Windows系统,你已经可以在Golhke网站上找到Matplotlib的二进制安装程序了。 - joaquin
1
我不同意那些建议从2.7开始的人。看一下你的依赖关系,看看哪些还没有声称支持3.x。然后看看将其移植需要多少工作量。去做吧。问题解决了,每个人都会喜欢你,并且你永远不需要将代码从2转换为3。 - gps
3个回答

13

更新我原先在2012年给出了答案。然而,现在,多年之后,答案应该并且必须是Python 3


本维基讨论了你的问题:我应该使用 Python 2 还是 Python 3 进行开发?

这个问题有一个非常大的主观部分,取决于你的具体情况和限制。

但是,在我看来,如果你不能确信你需要的所有第三方库都能与Python v3.x兼容,那么我建议你仍然使用 Python 2.x,但尽可能编写与 Python 3.x 兼容的代码(例如,使用 print() 等),以便如果你将来需要或想要迁移到 v3,你的工作不会那么具有挑战性。当然,还有关于从版本 2 迁移到 3 的文档和工具。以及将v2代码移植到v3的文档。

在你不能控制或无法安装较新版本的 Python 或自定义第三方软件/库安装的系统上,特别是这种情况更为普遍。

考虑到你的软件将在各种系统(Linux、Windows、Mac 等)上运行,并被许多不同的用户使用,我仍然认为 v2 在当今更为普遍。

所以,简短概括:使用版本 2.x,但准备好迁移到v3.x的代码

最后,如果您在SO搜索框中输入此搜索字符串“[python] version 3 or 2”,您将找到许多相关帖子:相关帖子

1
非常喜欢我在https://dev59.com/KGgu5IYBdhLWcg3wYGC3中的回答。 - Paulo Scardine
使用print()而不是print()是完全没有意义的,因为这种转换可以在需要时轻松使用2to3完成。使代码与Python 3兼容意味着不使用已弃用的模块或构造,并且要非常小心处理字节与Unicode与本地字符串。 - Lennart Regebro

7

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

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

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

更多信息请参考: https://wiki.python.org/moin/Python2orPython3/


0

我同意Levon的观点。

考虑到这些要求,我不会冒险开始使用Python3,但你应该尽可能地考虑Python3的变化来编写代码。

请参考这个问题编写尽可能接近Python 3.x语法的Python 2.7代码,它可能会帮助你处理一些导入和标准,以使你的代码尽可能具备未来性。

此外,如果你在多种系统上运行,你需要将你的Python版本捆绑在应用程序中分发,或者信任用户的安装。大多数操作系统(非Windows)都预装了2.x版本的Python,对于非技术用户来说升级到3.x并不容易,而且有可能破坏系统。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接