python 3k发生了什么?

时间:2009-11-09 11:59:46

标签: python python-3.x

由于我不是严格的python开发人员,请不要因为这个问题而激怒我。

我想知道Python 3k,从我的角度来看,可能是某种误解。 或者非常相关的一步(我考虑到2.6和3k版本,这几乎是一个接一个)。 在火焰开始之前,我将解释我在这个主题上的立场,并假设我的工作环境中存在一些事实。

我在一家前沿市场数据解决方案公司工作, 我们主要使用函数式语言进行高吞吐量数据分析。 但我们也使用python作为第二种技术,用于较小的任务,脚本,流程管理和监控。

我的一些同事根据python技术编写了更多严重的生产应用程序, 但是:

  • 所有的客户都使用python 2.6,
  • 因为上面我们有非常强大的2.6工具集和内部/外部支持,
  • 我们仍计划开发2.6个应用程序。

每个小工具开发也基于2.6平台。

我观察到的其他内容:

  • 此时任何新的Linux发行版(在我们的基础架构中)都在板上有python 2.6,
  • 大多数第三方模块是为2.6版开发的,
  • 网络资源的很大一部分也专用于2.6

(我知道您可以将大部分内容移植到3.1.x,但这里的开销太大了。)

我知道Py 3k仍然在增长,但是, 已经python 3.1.1,但没有人“关心”(在我的环境中)。 我强烈认为Python 3k的开销正在阻止它将这项伟大的技术推向新的方向。

7 个答案:

答案 0 :(得分:9)

OP似乎感到惊讶的是,小型版本升级(添加了一些漂亮的功能,基本上打破了零现有代码,并允许所有现有第三方库的重复工作)在他们的组织一夜之间发生,而主要版本升级(需要更多努力,特别是从第三方库作者的角度来看)没有,也不会。我觉得我很惊讶他们的惊讶; - )。

在大多数大型项目和组织中,即使是次要版本升级也不会立即发生;例如,App Engine仍在使用Python 2.5(显然,升级其专门的“沙盒”Python运行时,它所依赖的并不是零努力的主张,因此他们更愿意继续投入精力来增加引擎功能) - 所以我相信是Jython和PyPy等实现(我认为IronPython在迁移到2.6的过程中,但目前的生产版本仍为2.5)。

今天开始的新项目应该认真考虑从Python 3开始;例如,Allison Randal的pynie(Python for Parrot)项目完全做出了这个选择(而且,我认为,这是他们情况下的正确选择)。迁移现有项目是一个更难的主张,并且主要取决于现有项目所依赖的第三方组件(如果一个新项目本质上依赖于仅在第三方库中为2.6而不是3.1提供的某些功能,则新项目将当然,可能还必须坚持使用2.6版本。

正在积极开发的第三方库可能会逐渐推出Python 3版本(例如,gmpy最近这样做了)。一旦有足够的第三方库可用,丢失的库禁止使用Python 3迁移现有项目(或者甚至更多,启动新项目)的可能性开始很快下降。这使得Python 3端口可行。在某些时候,一些有吸引力的功能将仅在Python 3中可用(例如,如果和pynie发布时,可能是Parrot实现的情况,提供与Perl&amp; c的顺畅互操作性),这将提供强大的< em>动机一些项目只有3个(实际上比纯语言质量问题更强)。

即使这样,一些足够大的项目和组织也会坚持使用Python 2很长一段时间,你可以自信地预计在某个时候会存在2.7(之后可能还会有一两个,但这很难预测) 。嘿,我清楚地记得,在大多数大型项目和组织的90年代,“Fortran”仍然意味着Fortran 77(实际上在某些地方 - 并不比很多,比Fortran版本首次发布30多年后 - 今天仍然如此! )...对于Fortran 90及更高版本的所有优点,迁移成本(特别是各种编译器,库,工具)只是被认为是为新语言版本的优势付出的代价太高。当一种语言获得庞大的安装基础和丰富的第三方工具和库生态系统时,这是不可避免的,正如Python 2现在所拥有的那样。没有理由感到惊讶! - )

答案 1 :(得分:4)

Py3k是Python语言发展过程中不错的必要步骤。我比2.x更喜欢它,并且几乎完全代码。幸运的是,我不依赖于第三方库,其中很少有人可以使用Py3k。但他们会。

使用2.6没有任何问题 - 2.7会成为3.x的桥梁,你可以开始生成类似Py3k的代码,只需将你的三个代码移植到3.x派对的图书馆在那里。我想我读过某个地方,Py2k将会存在好几年。

答案 2 :(得分:3)

这究竟是什么问题?您发现目前使用的平台版本较新。你有充分的理由坚持你的版本。这种模式在很多开发组织中很常见,你根本无法追逐你使用的每个新版本的东西。你也不能永远呆在原地,最终你需要迁移。

有些力量可能会促使你迁移,例如

  • 新版本有一些非常重要的新功能(例如Java 5中的注释)
  • 正在取消对当前平台(或从属库)的支持

与此同时,您可以尝试对未来的代码进行验证,以便更轻松地进行迁移。您是否熟悉升级所需的变更级别?

答案 3 :(得分:3)

由于Python 3K不向后兼容,因此您可以预期在企业环境中需要更多时间才能被接受。 Python拥有庞大的代码库和许多重要的第三个库。在采用它之前,必须等待所有依赖项转换为Python 3K。这可能是一个非常缓慢的过程。

根据我的理解,Python的创建者预计会发生这种情况,但是他们认为不做更改并让语言“死”会更糟。

答案 4 :(得分:2)

Python 3.x还没有针对生产用途,但它会及时到达。

作为一种语言和运行时,Python 3.x很好。限制是许多重要的第三方库和工具仍处于移植和测试过程中。

预计向Python 3.x的过渡最多需要五年时间。

因此,如果您不是库开发人员,那么您暂时不需要关心Python 3.x.

此外,目前的Python用户不希望很快切换到Python 3.x.

答案 5 :(得分:0)

有很多库依赖于Python生态系统中的其他库。鼻子用于测试numpy,scipy需要numpy,许多科学图书馆需要scipy。此外,没有任何库开发人员可以在移植依赖项之前开始移植。整个链条需要很长时间才能移植到整个链路。

很多实用主义者都希望python 2.7和2.8会逐渐贬低在python 3中不起作用的位(引入一个名为print_function的打印函数,然后折旧print语句,然后重命名print_function进行打印...... ),所以最终python 2将与python 3合并。

答案 6 :(得分:0)

以下是Gu4 van Rossum在Py4Science会议上讨论Python 3的视频。 http://fperez.org/py4science/2009_guido_ucb/index.html