你在生产开发中标准化使用哪个 Python 版本(2.4,2.5,2.6,3.0),为什么?
我们小组主要做搜索引擎架构和内容整合的工作,大部分代码都是用Python写的。我们的所有构建工具和Python模块依赖都在源代码管理中,这样无论使用什么操作系统或平台,都可以轻松获取和加载环境,这有点像virtualenv的做法。
多年来,我们一直维护一个兼容Python 2.3的代码库,因为我们使用的一个商业产品依赖于Python 2.3。随着时间的推移,这导致了越来越多的问题,因为新的工具和库需要更新版本的Python,而Python 2.3大约是在2004年发布的。
最近,我们将构建环境与商业产品的环境解耦,现在可以使用我们想要的任何版本的Python(或Java)。大约一个月前,我们决定将Python 2.6作为最新的版本,因为它与之前的版本兼容。
目前Python 3.0还不是一个选择,因为我们需要迁移太多的代码才能让我们的构建和集成工具正常工作。
我们喜欢Python 2.6的许多新特性,特别是改进的模块和类装饰器等东西,但我们依赖的许多模块会让Python 2.6的解释器发出各种弃用警告。我们还对一个管理EC2云集群节点的工具Supervisor感兴趣,但它在Python 2.6上根本无法正常工作。
现在我在想,是否应该暂时将标准版本定为Python 2.5,而不是在生产环境工具的开发中使用Python 2.6。我们想要/需要的大多数工具似乎在Python 2.5上都能正常工作。我们正在努力解决这个问题,以免在Python 2.6的特性或模块上产生太多依赖。
非常感谢!
-Michael
5 个回答
我们现在还是用2.5.2版本。我们的技术架构主要是基于Django(不过还有其他一些小工具)。所以我们会尽量跟着他们的步伐。
为了让epydoc 3.0.1正常工作,我们不得不把docutils降到0.4版本。目前为止,这还不是大问题,但将来可能会让我们重新考虑使用epydoc。
升级到2.6是我们开发计划的一部分。我们有预算,但现在没有固定的时间表。
至于3.0的升级,我也时常提醒大家。我们需要为此做好预算。如果Django没有升级到3.0,我们今年是不会做这个升级的,可能明年会考虑。
我公司现在用的是2.5版本。就像你们一样,我们有很多原因不能升级到3.0,但我真的希望我们能升级到2.6。
每天写代码的时候,我会查文档,找到我想要的模块或函数,但总是看到一个小注释:在2.6版本中新增加的。
我建议你使用最新的版本,如果出现了过时的警告(可能会很少),那就去找个更好的方法来解决。总的来说,使用2.6版本,你的代码会更好。
我不会因为有弃用警告就放弃使用2.6版本;这些警告会随着时间慢慢消失。(你可以在Python解释器中使用-W ignore
选项,这样至少可以不显示这些警告。)但是,如果你需要用的模块确实不支持Python 2.6,那就有理由继续使用2.5版本。现在Python 2.5被广泛使用,而且可能会持续很长时间(想想2.3版本都用了多久!),所以即使你选择了2.5,也不必担心很快就要升级。
我在所有开发工作中都使用Python 2.5,但这只是因为在Gentoo(Linux的一种发行版)的软件库中正好有这个版本。当Gentoo的维护者宣布Python 2.6“稳定”时,我会切换到那个版本。当然,这个理由可能不适用于你。
*
实际上,Python 2.6是稳定的,之所以在Gentoo中没有被宣布为稳定,是因为Gentoo依赖的其他程序也依赖于Python,而这些程序还没有升级到支持2.6版本。再说一次,这个理由可能对你来说并不适用。