问题标签 [python-2to3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
936 浏览

python - 如何启动自己的 2to3 修复程序?

我写了自己的修复程序,我该如何运行它?我没有找到明显的方法来做到这一点。

只有这个:

然后运行它:

0 投票
1 回答
984 浏览

python - 哪些 2to3 修复程序输出有效的 Python 2 代码?

2to3 是一个 Python 程序,它读取 Python 2.x 源代码并应用一系列修复程序将其转换为有效的 Python 3.x 代码

考虑https://docs.python.org/3/library/2to3.html#fixers中列出的四十个修复程序。按照设计,它们都输出有效的 Python 3 代码。哪个输出有效的 Python 2代码?

例如,“将旧的不等式语法转换为”的修复程序 NE<>具有!=此属性,因为!=它在 Python 2 和 Python 3 中都是有效的。

__nonzero__而“重命名为”的修复程序 NONZERO__bool__没有该属性,因为__bool__Python 2.7 中没有函数。

0 投票
1 回答
237 浏览

python-3.x - setuptools:在构建目录而不是原始目录上运行测试

我目前正在尝试使为 Python2 编写的模块与 Python3.2 兼容。

我首先确保所有代码都可以自动转换2to3并添加到 setup.py 中:

到目前为止,一切正常。

现在,我想测试转换后的文件。
编写测试以便它们可以在没有2to3. 我的文件夹结构是:

在我的 setup.py 中,我添加了

现在我执行

为了测试我自动转换的代码。但它失败了,因为测试仍然在mymodule目录上运行:

在我build/的是正确转换的文件。如果分发正确转换它们,为什么不为转换后的文件执行测试?

我错过了什么吗?我已经检查了 setuptools/distribute 的文档以查找缺少的参数。我不想将我的测试包含在模块中,因为有几个资源文件仅用于测试会占用不必要的空间。

=> 在 python3 中运行时,我可以配置我的 setup.py 以运行不同文件夹的测试吗?

0 投票
4 回答
2432 浏览

python - 为什么 2to3 将 mydict.keys() 更改为 list(mydict.keys())?

我正在查看包含此更改的 2to3 的输出:

output字典在哪里。

这种变化有什么意义?为什么2to3会这样做?

这种变化如何使代码与 Python 3 兼容?

0 投票
2 回答
108 浏览

python - Traceback.py 尝试比较解析为 ImportError 的 int 和 'limit'

我试图让生菜在 python 3 上运行,但它没有工作。所以我很快2to3 'd 所有有问题的文件,现在我得到了这个问题:

处理找不到地形时,生菜会因为这条线而崩溃

这是由于:

极限是一个ImportError,不能与 n 比较,它是一个int

我该如何解决这个问题?

0 投票
2 回答
95316 浏览

python - 用 python 3 解开一个 python 2 对象

我想知道是否有一种方法可以使用 Python 3.4 加载在 Python 2.4 中腌制的对象。

我一直在对大量公司遗留代码运行 2to3 以使其保持最新状态。

完成此操作后,在运行文件时出现以下错误:

查看竞争中的腌制对象,它是 a dictin a dict,包含 type 的键和值str

所以我的问题是:有没有办法用 python 3.4 加载最初在 python 2.4 中腌制的对象?

0 投票
1 回答
564 浏览

python - 编写修复程序后将自定义修复程序添加到 lib2to3

我正在为lib2to3编写自定义修复程序,而不是将代码迁移到 Python 3,而是利用 lib2to3 的源代码解析功能,而不是使用正则表达式等手动解析源代码。

此时我已经编写了一个基本的修复程序,但我不确定如何将它实际添加到 lib2to3。我只想使用单个修复程序,我不打算将任何代码迁移到 Python 3。这应该不是问题,因为可以指定只使用显式传递的修复程序:

2to3 -f fixer_name.py example.py

我当然可以将修复程序添加到修复程序路径:

lib2to3/fixes/

但该脚本旨在作为一种工具分发,供用户迁移使用已弃用的导入格式的旧源代码。不幸的是,缺少 lib2to3 的文档,我发现的唯一文章建议使用已弃用的分发包。

欢迎任何建议,谢谢。

0 投票
1 回答
734 浏览

python - 使用元类将 Python2 转换为 Python3 会导致错误的流程

我有一个非常大的 Python 2.7.6 项目,需要将其转换为 Python 3.4。我使用了 2to3 脚本,但“元类”处理似乎被破坏了。

我过滤了代码以缩短和查明问题。以下片段适用于 Python 2.7.6:

代码按预期打印:

但是当使用 Python 3.4 运行代码时,我只有最后一个打印:

要么2to3计算错误,要么需要一些手动工作。不幸的是,我对元类几乎没有经验。

0 投票
1 回答
916 浏览

python - 使 Python 2 与 Python 3 兼容

我目前的要求是编写一个与Python 2.4.3RHEL 5 捆绑在一起的脚本。但是几年后说 5 年,服务器可能会升级到随附的 RHEL 8 或 9 Python 3。所以我应该编写与这两个版本兼容的代码。现在我的脚本包含基本操作,例如创建目录、解压缩文件、文件操作、XML 文件读取(我现在正在使用minidom)和一些散列。

现在我发现一个名为的工具python-modernize可以完成构建在2to3. 我搜索了该工具,但得到了一个 tar.gz 文件。正如他们在使用中所说的那样,它不包含 python-modernize 文件。但我发现的只是一个setup.py文件。我是 Python 新手,我所知道的只是用pip. 但我也读到使用 pip 对于 Python 2.4.3 来说是一项艰巨的工作。

请告诉我如何才能完成这项工作。

我也提到了这个,但找不到如何使用该工具。

另外请让我知道是否有任何好的替代方法。

0 投票
1 回答
140 浏览

python - 在内存脚本上使用 2to3

我有一个 Python 2.7 格式的脚本数据库。在我的 Python 3 应用程序中加载后,我想将它们转换为 Python 3 格式,而无需将每个脚本都写入文件。我尝试了以下方法:

但是有时这会失败;例如,如果 py_script 只是“通过”。错误很神秘:

如果 py_script 是“”,或者它是多行字符串,它就可以工作。知道什么可能导致简单案例失败吗?