【问题标题】:Can one Python project use both 2.x and 3.x code?一个 Python 项目可以同时使用 2.x 和 3.x 代码吗?
【发布时间】:2023-03-21 04:18:02
【问题描述】:

我将开始一个长期(约 1 年)的 Python 编程项目。我想为我的 GUI 使用 wxPython(支持 2.6),但我也想在项目的其余部分使用 3.1(开始使用 3.x 语法)。

我有什么方法可以设计一个混合 2.x 和 3.x 模块的项目吗?还是我应该硬着头皮继续使用 2.x(首选,因为我真的很想学习 wxPython)或 3.x?

谢谢,

迈克

【问题讨论】:

  • 2to3 实用程序将您的 Python 2 转换为 Python 3。为什么要“混合”?为什么不直接编写 Python 2 并进行转换?
  • 一个(初学者的)预感告诉我,如果 2.x 到 3.x 的转换像 2to3 一样简单,那么所有大型图书馆都会在 2to3 出现的那一天做到这一点。像 wxPython 背后的那些(更加有成就的)程序员还没有移植他们的库,这让我觉得翻译很有挑战性,即使对于像我的项目这样基本的东西也是如此。
  • @Begbie00:我不确定你是否有这个权利。 就像 2to3 一样简单。然而,并不是每个人都真正关心。一些作者忙于其他事情,无法为 Python 3 准备好他们的 Python 2 包。因此,并不是每个人都升级了所有东西以便 2to3 实用程序可以工作。然而,你正在重新开始。为什么不按照 Python 网站的说明使用 2to3?为什么要“混合”?
  • 啊,好视角。非常感激。谢谢。
  • @S.Lott:将使用 wxPython (2.x) + 的能力与学习新语法 (3.x) 相结合@dan04:很有趣,谢谢

标签: python python-3.x python-2.x


【解决方案1】:

您应该使用与 python 3.1 非常接近的 python 2.7(预计将在未来几天内发布候选版本),并且代码注意不使用已弃用的功能。 python 2.7 有一个最新版本的 wxpython。 在 wxpython 获得 3.1-3.2 版本之后,代码的转换应该不会太痛苦。 尽管如此,wxpython 还是有no deadline for the transition :-(

另一种选择是使用已经为 python 3.1 构建的pyQt

【讨论】:

  • +1 用于 pyQt。 pyQt 目前还具有在 Mac OS X 上更好的可用性的优势(它可以通过 Fink 获得,而 wxPython 不是)。
【解决方案2】:

Python 2 和 3 并没有什么不同。如果你已经学好 Python 2,那么熟悉 Python 3 将是几分钟的事情。官方建议你应该使用 Python 2.6(当前版本)并尝试向前兼容。 Python 3 目前不是大型项目的选择,因为几乎没有一个流行的包被翻译。但是 Python 2 和 3 的开发会持续很长一段时间,所以你不会因为不使用 Python 3 而损失太多。你可以导入 3 的许多语法特性(Unicode 字符串字面量、除法、print 函数、绝对导入)使用__future__ 模块,标准库基本保持不变。所以我建议使用 Python 2。

【讨论】:

  • 从今天的角度来看不好的建议;)
【解决方案3】:

将使用 wxPython (2.x) + 的能力与学习新语法 (3.x) 相结合

不要“混合”。

编写 Python 2。让它工作。

单独使用 Python 3。不要“混合”。

当各种包和模块在 Python 3 中可用时,使用 2to3 转换来创建 Python 3。你会发现一些小问题。修复您的 Python 2,以便您的包在 Python 2 中工作,并且在转换后工作。

然后,您可以放弃对 Python 2 的支持并专注于 Python 3。

不要“混合”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多