5

在我们的团队中,我们主要从事搜索引擎架构和内容集成工作,并且大部分代码库都使用 Python。我们所有的构建工具和 Python 模块依赖项都在源代码控制中,因此可以检查它们并加载环境以供使用,而不管操作系统/平台如何,有点类似于virtualenv使用的方法。

多年来,我们一直在维护与 Python 2.3 兼容的代码库,因为我们使用的商业产品之一依赖于 Python 2.3。多年来,这导致了越来越多的问题,因为自 2004 年 2.3 版以来,更新的工具和库需要更新版本的 Python。

我们最近将我们的构建环境与商业产品环境的依赖解耦,并且可以使用我们想要的任何版本的 Python(或 Java)。自从我们将 Python 2.6 标准化为与以前版本向后兼容的最新版本 Python 以来,已经过去了大约一个月左右的时间。

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 功能或模块有很多依赖之前,我们正在尝试解决这个问题。

非常感谢!

-迈克尔

4

5 回答 5

5

我不会因为弃用警告而放弃 2.6;这些会随着时间的推移而消失。(您-W ignore至少可以使用 Python 解释器的选项来防止它们被打印出来)但是如果您需要使用的模块实际上不适用于 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 一起使用。同样,这种推理可能不适用于您。

于 2009-05-01T16:41:50.983 回答
4

我公司在2.5标准化。像你一样,我们不能切换到 3.0 有一百万个原因,但我非常希望我们可以升级到 2.6。

每天都在做编码,我会浏览文档,我会找到我想要的模块或函数,但是它会有一个小注释:2.6 版中的新功能

我会说使用最新版本,如果您弹出折旧警告(可能很少),那么只需寻找更好的方法来做到这一点。总体而言,您的代码使用 2.6 会更好。

于 2009-05-01T16:44:25.470 回答
2

对我来说,坚持使用 python 2.5+ 最重要的是因为它正式支持ctypes,这改变了许多插件系统。

尽管您可以找到与 2.3/2.4 一起使用的 ctypes,但它们并未正式捆绑。

所以我的建议是2.5。

于 2009-05-01T16:43:31.697 回答
2

我们现在坚持使用 2.5.2。我们的技术堆栈以 Django 为中心(但我们还有十几个其他零碎的东西。)所以我们与他们的工作保持密切联系。

我们必须回到 docutils 到 0.4,这样它才能与 epydoc 3.0.1 一起使用。到目前为止,这还不是一个大问题,但它可能——在某个时候——让我们重新考虑我们对 epydoc 的使用。

2.6 升级是我们开发计划的一部分。我们有预算,但现在没有固定的时间表。

同样,3.0 升级也是我提醒人们的事情。我们必须为此做预算。除非 Django 升级到 3.0,否则我们今年不会这样做。我们明年可能会这样做。

于 2009-05-01T16:46:51.610 回答
1

我认为最好的解决方案是放弃对完全统一的希望,尽管有一个共同的环境是需要争取的。您将始终面临版本问题,例如在升级到下一个最佳解释器版本时。

因此,您可以通过仔细查看发布管理来解决此问题,而不是根据每个问题来处理它。

与其发布源代码,不如选择依赖于平台的二进制文件(源代码分发除外)。

所以你要做的是定义一些受支持的 CPU,例如:x86-32、x86-64、sparc

那么哪些操作系统:Linux、Windows、Solaris、FreeBSD

对于每个操作系统,您都支持它们的许多主要版本。

下一步是为所有这些提供二进制文件。

是的,确实这将需要相当多的基础设施投资并从您的存储库设置自动构建(您确实拥有它们吗?)。

优点是您的用户只需安装“一个”东西,您可以轻松切换版本甚至混合版本。实际上,您甚至可以通过这种方法使用不同的编程语言,而不会过多地影响您的发布管理。

于 2009-05-01T17:27:00.063 回答