gpt4 book ai didi

python - 社区中在同一代码库中使用 python 2.x 和 3.x 的首选方法是什么?

转载 作者:行者123 更新时间:2023-11-28 20:10:51 25 4
gpt4 key购买 nike

我正在 Python 3.x 中开始一个项目(我对 Python 很陌生),并且有可能我需要使用 Thrift 或任何其他尚未移植到 Python 3.x 的库.

如果其他人可以从中受益,我不介意花一些(大量)时间将外部库转换为 Python 3.x,但我很好奇开源中是否有任何首选方法社区来解决这个问题。

我一直在 python.org 站点和其他一些网站上到处阅读,但我还没有找到任何结论。我唯一发现的是,这是一个先有鸡还是先有蛋的问题。

我不可能(除非没有其他选择)发送一个带有我自己修改的库的转储,只是为了使其与 3.x 兼容。

我应该...

  1. 使用 __future 导入准备所有代码并适本地更改这里和那里并让它准备好与 2.x 和 3.x 一起工作?除了上游对集成如此大量的更改的自然抵制之外,我是否会发现这有任何问题?

  2. 创建另一个代码分支?对我来说,这应该是毫无用处的,因为除了我之外没有人会维护那个分支,而且这是一个巨大的重复工作。

  3. 使用我不知道的某种类型的包装器来按原样使用这些库(比如使用另一种语言的一些中间绑定(bind))并在我的代码中创建胶水?

非常感谢!

最佳答案

您可以使用多种策略,哪种策略最好取决于几件事,例如您要移植的内容、它的复杂程度以及它使用了多少 Python 内部构件。基本上,如果您想同时支持 Python 2 和一次使用 Python 3,对你的代码运行 2to3,看看它有多少变化。如果更改主要是您可以使用 __future__ 导入解决的问题,那么移植到 Python 3 并重新引入 Python 2 兼容性可能是一种可行的前进方式。(要深入了解这一点,请参阅我的 Migration strategies 页面。)

如果变化很大,你可能最好使用 2to3 来支持 Python 3。如果你可以使用 Distribute 来打包你的项目,这会变得更容易。

在这两种情况下,您都可以使用 six .

另见 my talk on the subject .

关于python - 社区中在同一代码库中使用 python 2.x 和 3.x 的首选方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6024212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com