问题标签 [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.
python - 如何启动自己的 2to3 修复程序?
我写了自己的修复程序,我该如何运行它?我没有找到明显的方法来做到这一点。
只有这个:
然后运行它:
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 中没有函数。
python-3.x - setuptools:在构建目录而不是原始目录上运行测试
我目前正在尝试使为 Python2 编写的模块与 Python3.2 兼容。
我首先确保所有代码都可以自动转换2to3
并添加到 setup.py 中:
到目前为止,一切正常。
现在,我想测试转换后的文件。
编写测试以便它们可以在没有2to3
. 我的文件夹结构是:
在我的 setup.py 中,我添加了
现在我执行
为了测试我自动转换的代码。但它失败了,因为测试仍然在mymodule
目录上运行:
在我build/
的是正确转换的文件。如果分发正确转换它们,为什么不为转换后的文件执行测试?
我错过了什么吗?我已经检查了 setuptools/distribute 的文档以查找缺少的参数。我不想将我的测试包含在模块中,因为有几个资源文件仅用于测试会占用不必要的空间。
=> 在 python3 中运行时,我可以配置我的 setup.py 以运行不同文件夹的测试吗?
python - 为什么 2to3 将 mydict.keys() 更改为 list(mydict.keys())?
我正在查看包含此更改的 2to3 的输出:
output
字典在哪里。
这种变化有什么意义?为什么2to3会这样做?
这种变化如何使代码与 Python 3 兼容?
python - 用 python 3 解开一个 python 2 对象
我想知道是否有一种方法可以使用 Python 3.4 加载在 Python 2.4 中腌制的对象。
我一直在对大量公司遗留代码运行 2to3 以使其保持最新状态。
完成此操作后,在运行文件时出现以下错误:
查看竞争中的腌制对象,它是 a dict
in a dict
,包含 type 的键和值str
。
所以我的问题是:有没有办法用 python 3.4 加载最初在 python 2.4 中腌制的对象?
python - 编写修复程序后将自定义修复程序添加到 lib2to3
我正在为lib2to3编写自定义修复程序,而不是将代码迁移到 Python 3,而是利用 lib2to3 的源代码解析功能,而不是使用正则表达式等手动解析源代码。
此时我已经编写了一个基本的修复程序,但我不确定如何将它实际添加到 lib2to3。我只想使用单个修复程序,我不打算将任何代码迁移到 Python 3。这应该不是问题,因为可以指定只使用显式传递的修复程序:
2to3 -f fixer_name.py example.py
我当然可以将修复程序添加到修复程序路径:
lib2to3/fixes/
但该脚本旨在作为一种工具分发,供用户迁移使用已弃用的导入格式的旧源代码。不幸的是,缺少 lib2to3 的文档,我发现的唯一文章建议使用已弃用的分发包。
欢迎任何建议,谢谢。
python - 使用元类将 Python2 转换为 Python3 会导致错误的流程
我有一个非常大的 Python 2.7.6 项目,需要将其转换为 Python 3.4。我使用了 2to3 脚本,但“元类”处理似乎被破坏了。
我过滤了代码以缩短和查明问题。以下片段适用于 Python 2.7.6:
代码按预期打印:
但是当使用 Python 3.4 运行代码时,我只有最后一个打印:
要么2to3
计算错误,要么需要一些手动工作。不幸的是,我对元类几乎没有经验。
python - 使 Python 2 与 Python 3 兼容
我目前的要求是编写一个与Python 2.4.3
RHEL 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 来说是一项艰巨的工作。
请告诉我如何才能完成这项工作。
我也提到了这个,但找不到如何使用该工具。
另外请让我知道是否有任何好的替代方法。
python - 在内存脚本上使用 2to3
我有一个 Python 2.7 格式的脚本数据库。在我的 Python 3 应用程序中加载后,我想将它们转换为 Python 3 格式,而无需将每个脚本都写入文件。我尝试了以下方法:
但是有时这会失败;例如,如果 py_script 只是“通过”。错误很神秘:
如果 py_script 是“”,或者它是多行字符串,它就可以工作。知道什么可能导致简单案例失败吗?