升级到 python 3.0 的提示? [复制]

2023-12-02

因此,随着 Python 3.0(现在是 3.1)的最终版本,很多人都面临着如何升级而不因向后不兼容而丢失一半代码库的担忧。

人们有哪些最佳技巧可以避免切换到下一代 Python 时几乎不可避免地出现的许多陷阱?

也许一个好的起点是“使用 2to3 将 python 2.x 代码转换为 3.x”:-)


首先,这个问题非常类似于您计划如何迁移到 Python 3?。检查那里的答案。

还有一个section在 Python Wiki 中有关将应用程序移植到 Python 3.x 的内容

The python 3.0 发行说明包含有关移植的部分。我引用那里的提示:

  1. (先决条件:)从出色的测试覆盖率开始。
  2. 移植到 Python 2.6。这应该不比一般的工作多 从 Python 2.x 到 Python 2.(x+1)。 确保所有测试都通过。
  3. (仍然使用2.6:)打开-3命令行开关。这将启用有关将要使用的功能的警告 在 3.0 中删除(或更改)。运行你的 再次测试套件,并修复代码 你会收到警告,直到有 没有留下任何警告,以及您所有的测试 还是过去了。
  4. 在源代码树上运行 2to3 源到源转换器。 (参见 2to3 - 自动化 Python 2 到 3 代码翻译以获取更多相关信息 工具。)运行结果 Python 3.0 下的翻译。手动 解决任何剩余的问题,修复 直到所有测试再次通过为止。

不建议尝试写 源代码在以下情况下运行不变 Python 2.6 和 3.0;你必须 使用非常扭曲的编码风格, 例如避免打印语句, 元类等等。如果你是 维护一个需要的库 同时支持Python 2.6和Python 3.0,最好的方法是通过编辑 2.6 来修改上面的步骤 3 源代码版本和运行情况 再次使用 2to3 翻译器,而不是 编辑3.0版本的源码 代码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

升级到 python 3.0 的提示? [复制] 的相关文章

随机推荐

  • 0xC0000005:读取位置 0x00000008 时发生访问冲突

    我已经为此苦苦挣扎了一段时间 想知道是否有人可以提供帮助 我正在尝试使用 C 和 SDL1 3 制作粒子样本 到目前为止我已经取得了巨大的成功 程序编译并打开屏幕 但没有任何反应 当我运行调试器时 我收到此错误 SDL 1 3 Space
  • 为每个用户选择每天最高的 3 个分数

    我有一个像这样的 MYSQL 表 id userid score datestamp 1 1 5 2012 12 06 03 55 16 2 2 0 5 2012 12 06 04 25 21 3 1 7 2012 12 06 04 35
  • Windows 堆栈和堆地址范围

    到目前为止 我在使用 Linux 时 堆栈地址非常高 而堆地址非常低 通过使用 C 程序打印堆和堆栈地址可以看出 我对 Win32 进程内存布局有一个问题 MWSDN说堆栈地址高于堆地址 但从我在实践中看到的情况来看 堆栈地址低于堆地址 所
  • 关闭 MySQL 连接 (PHP)

    我编写了一个类来创建与 MySQL 的自动连接并创建查询 它看起来是这样的 include constants php class MySQLDB var connection function construct this gt conn
  • openpty 之后的 ncurses newterm

    我正在尝试弄清楚如何执行以下操作 创建一个新的伪终端 打开在 从属 伪终端内运行的 ncurses 屏幕 fork A 将 I O 从程序运行的终端 bash 转发到新的 从属 终端或 B 退出 让 ncurses 程序在新 pty 中运行
  • 从 R 中未知密度的分位数生成随机样本[重复]

    这个问题在这里已经有答案了 如何从未知密度的分位数生成随机样本数据f x for x之间0 and 4 in R f function x x 1 2 exp x 3 3 2 x 2 2 x 如果我理解正确的话 你想生成具有密度函数由下式给
  • 后缀(前缀)增量、L 值和 R 值(在 C 和 C++ 中)

    我刚刚了解到以下事实 前缀增量 var name 的结果是 C 中的 R 值 至少 我是 确保它不是 C 中的 L 值 但它是 C 中的 L 值 后缀增量 var name 的结果是 C 中的 R 值 至少 我是 确保它不是 C 中的 L
  • 提升语义操作导致解析问题

    我一直在使用 Boost mini 编译器示例 这是源代码的根 http www boost org doc libs 1 59 0 libs spirit example qi compiler tutorial mini c 我感兴趣的
  • 向结构化numpy数组添加字段(3)

    这个问题已经被问过并回答过多次 here and here 例如 显然该函数已在 numpy 1 6 1 中移动 没有更多了numpy lib recfunctions 虽然我可以按照之前的帖子中指定的方式实现我自己的 但我会really而
  • 如何在连接字段中使用逗号分隔列表连接两个表

    我有两张桌子 categories and movies In movies表我有一列categories 该列包含电影所属的类别 类别是用逗号分隔的 ID 这是一个例子 Table categories id name 1 Action
  • Spark 无法找到 JDBC 驱动程序

    因此 我一直在使用 sbt 和 assembly 将所有依赖项打包到一个 jar 中以用于我的 Spark 作业 我有几份工作正在使用c3p0设置连接池信息 将其广播出去 然后使用foreachPartition然后在 RDD 上获取连接
  • 如何在 DBX 中使用连接池?

    Well 我设法让代表驱动程序正确设置 但连接池仍然给我带来很多麻烦 从文档中给出的描述来看 连接池似乎应该像这样工作 在单个全局 Connection 对象上设置 DBXPool 驱动程序委托 将此 Connection 对象用于对数据库
  • 这似乎是一个关于 Javascript 事件的类。它是什么?

    我刚刚遇到了一些看起来像这样的 jQuery add row live click add function do something 这似乎与 点击 添加 事件 我自己使用自定义事件并认为它们很棒 但是git grep我们的代码库上没有显
  • 替换终端中的多行字符串

    我正在尝试编写一些代码来覆盖其之前的输出 例如原始输出是 1 但是 1 被替换为 2 这使得它看起来好像 1 一开始就没有被输出过 我有一个名为的列表列表board 我使用以下代码将此列表转换为多行字符串 rendered board fo
  • JavaScript:在选项卡之间共享数据[重复]

    这个问题在这里已经有答案了 在浏览器中打开的选项卡之间共享数据的最佳方式是什么 如需更现代的解决方案 请查看这个答案引述如下 我坚持使用问题中提到的共享本地数据解决方案localStorage 就可靠性 效率和浏览器兼容性而言 它似乎是最好
  • 为什么 '$_' 与 Perl 单行代码中的 $ARGV 相同?

    我在尝试在 Perl 单行代码中打印单引号时遇到了这个问题 我最终发现你必须逃离他们 这是一些代码来说明我的问题 让我们从打印文本文件开始 perl ne chomp print n shortlist txt red orange yel
  • 在C语言中如何使用scanf获取int?

    我正在尝试了解从控制台获取输入的不同方法的优点和缺点 我很困惑scanf 为什么我需要使用use favNumber代替favNumber 我明白那个 favNumber是地址位置favNumber 但是为什么要这样做呢 我觉得这里有一个类
  • 无法在 macOS 应用程序的 Xcode 9 中测试应用内购买

    自 iOS11 发布以来 测试应用内购买一直是一件痛苦的事 如果不是不可能的话 虽然我在这里找到了在 iOS 上测试的一个很好的解决方法 https stackoverflow com a 46467498 4514671我找不到 macO
  • 从 SELECT 中的多个选择中获取值

    我有一个选择框 允许您选择多个选项 我需要使用 JavaScript 访问所有选定的值 可能是值数组 这是获取所选值数组的最佳方法 mySelect val Return an array of the selected options v
  • 升级到 python 3.0 的提示? [复制]

    这个问题在这里已经有答案了 因此 随着 Python 3 0 现在是 3 1 的最终版本 很多人都面临着如何升级而不因向后不兼容而丢失一半代码库的担忧 人们有哪些最佳技巧可以避免切换到下一代 Python 时几乎不可避免地出现的许多陷阱 也