【问题标题】:Python 3 porting workflow?Python 3 移植工作流程?
【发布时间】:2010-09-27 23:25:17
【问题描述】:

我有一个小项目我想尝试移植到 Python 3 - 我该怎么做?

我使用python2.6 -3(主要是删除.has_key() 调用)使代码在没有警告的情况下运行,但我不确定使用2to3 工具的最佳方法。

使用 2to3 工具将此源代码转换为 3.0 语法。不要手动编辑输出!

运行2to3 something.py 会输出一个差异,它本身没有用。使用--write 标志会覆盖something.py 并创建一个备份.. 看来我必须这样做..

2to3 something.py
python3.0 something.py
mv something.py.bak something.py
vim something.py
# repeat

..这有点绕 - 理想情况下我可以做类似的事情..

mv something.py py2.6_something.py # once

2to3 py2.6_something.py --write-file something.py
vim py2.6_something.py
# repeat

【问题讨论】:

    标签: python python-3.x porting


    【解决方案1】:

    啊哈,你可以通过管道将 2to3 输出到patch 命令,该命令可以将修改后的文件写入新文件:

    mv something.py py2.6_something.py
    2to3 py2.6_something.py | patch -o something.py
    

    【讨论】:

      【解决方案2】:

      2.x 应该是您积极开发的代码库,因此 2to3 确实应该在分支或临时目录中运行。我不确定您为什么要将 2.x 和 3.x 版本放在同一个目录中。 distutils 有一个 build_2to3 脚本,它将在 3.0 安装上运行 2to3。

      【讨论】:

      • 所以我可以快速/轻松地编辑 2.x 版本,运行 2to3,在 3.x 上运行测试(并重复)。如果我有 3.x 的分支,如何快速更改 2.x 分支并重新生成 2to3 的代码?
      • 一般来说,您会在 2.x 分支上进行所有更改,并且在分发或尝试移植您的库时只使用 2to3。
      • 我已经把问题说得更清楚了。我创建了 py3 分支以包含我必须对 py2.6 代码所做的更改,所以它会 2to3 没有错误
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-13
      • 2012-05-04
      相关资源
      最近更新 更多