问题标签 [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 投票
1 回答
2832 浏览

python - 如何使用 2to3 就地编辑文件?

我能够2to3在终端中加载文件。它进行了大量打印,输出如下:

但是该文件没有更改。而且我在“运行”之后没有任何指令2to3。请帮忙。

0 投票
1 回答
3272 浏览

python - 尝试使用 2to3.py 将 python 代码转换为 python34 时出现无法解析错误

当我尝试将一些 python2.7 代码转换为 python3 时,我遇到了一些错误。我知道这段代码在 python2.7 中有效。但是,当我尝试使用 2to3.py 将其转换为 python3 时,我收到此错误:

搜索互联网后,我看到有人说添加 -p 可以解决问题,但是当我添加时,我只会收到新错误:

我不知道查看原始文件是否会有所帮助,但它有几千行。任何帮助都将非常感激。谢谢!

-雷切尔

0 投票
2 回答
239 浏览

python-3.x - Python 2to3,有条件地迭代列表(过滤器与列表理解)

2to3我正在使用该工具从 Py2 -> Py3 移植一堆脚本。一个特别建议的更改让我有点困惑,所以我很感激一些帮助:

原行是:

hm_regions持有namedtuples一个名为的属性dir,并使用此循环遍历与给定方向参数匹配的那些。

建议的更改是

我知道这基本上做同样的事情,所以理论上结果应该不会改变(没有尝试过)。但我发现双for循环非常难看,而且我想这不是最漂亮、最优雅的迭代方式。

我也尝试过for r in hm_regions if r.dir == direction:由于语法错误而失败,这有点令人沮丧。

编辑:这里的另一个问题是改变是否有意义?我意识到建议更改的潜在动机是filter不再返回列表。但在这种情况下,我不使用列表,只是迭代它。因此它应该也能正常工作,对吧?

0 投票
3 回答
794 浏览

python - 2to3 - 如何保留输入文件中的换行符?

我正在尝试2to3在 *.py 文件具有 Unix 风格的结束行字符的 Windows 机器上运行。运行2to3修改输出文件中的换行符。

MCVE:

print2.py 之前的内容

执行的命令:

print2.py 之后的内容

预期内容:

执行转换时是否可以保留旧的换行符2to3

0 投票
2 回答
3704 浏览

python - 2to3 说“不需要更改”,然后是“需要修改的文件”

我跑2to3 -f all -f idioms -f buffer -f set_literal -f ws_comma foo.py

输出:

内容foo.py

我如何解释这个输出?

0 投票
1 回答
43 浏览

python - 如果脚本仅在 Python2.7 的 github 上可用,他们是否也应该在 Python3.x 中同时发布这些脚本?替换2.7代码?

有大量用 python2.7 编写的用于学术研究的脚本/代码只能在合作者的 github 存储库中获得。问题是有一天它应该被移植到python3.x。

目前,用户只需下载python2.7代码,应用python的2to3,使用这个代码是正确的标准吗?(我想如果 2to3 不能正常工作,我会通过电子邮件向所有者发送电子邮件……)也就是说,由用户来生成 python3.x 代码。

或者移植此代码并请求用户将其推送给整个社区使用对我有用吗?在这种情况下,两个版本都应该可以使用吗?或者我应该要求所有者将python2.7代码替换为新的python python3.x代码?

目前的标准是什么?

0 投票
1 回答
2818 浏览

python-3.x - 通过 pip 安装 BeautifulSoup4 会产生 Python 3.5 的导入错误

我正在尝试为 Python 3.5 安装 beautifulsoup4,但是,当我调用“import bs4”在 Python 3.5.2 shell 中进行测试时,我收到了以下错误:

Traceback(最近一次调用最后一次):文件“”,第 1 行,在导入 bs4 文件“C:\Users\Dan\AppData\Local\Programs\Python\Python35\lib\bs4__init__.py”,第 53 行'你正在尝试在 Python 3 下运行 Python 2 版本的 Beautiful Soup。这将不起作用。'<>'您需要转换代码,方法是安装它 ( python setup.py install) 或运行 2to3 ( 2to3 -w bs4)。^ SyntaxError: 无效的语法

我按照以下路径运行 pip 来最初安装 beatifulsoup4,我用来安装公司代理的命令是:$ pip install --proxy=proxy.com beautifulsoup4

C:\Users\Dan\AppData\Local\Programs\Python\Python35\Scripts

我之前在这台计算机上安装了 Python 2.7,但是在安装 3.5 时我将其卸载。如果我没有正确卸载 Python 2.7,pip 可能无法安装和转换 bs4 为 3.5 吗?我也尝试使用 Requests 模块执行这些相同的步骤。我尝试使用 Python shell 推荐的命令进行转换,但我尝试使用“2to3”也失败了。任何帮助表示赞赏。

0 投票
1 回答
1368 浏览

python-3.x - 将 2to3 输出重定向到新文件

当我运行2to3.py -w my_script.py它时,它会转换my_script.py为 Python3,然后放入原始版本my_script.py.bak

我希望旧文件保持原样,并将转换后的文件放入一个新文件中,例如my_script.converted.py. 有没有2to3.py允许这样做的论点?

0 投票
1 回答
9248 浏览

python - 如何使用2to3翻译目录中的所有文件

我可以翻译一个文件。但我不明白如何翻译整个目录。来自文档:

你能给我一个具体的例子吗?我有 python2 文件,D:\Dir1想在D:\Dir2. 我现在在命令提示符里面Dir1输入c:\Users\........\Python36\Tools\scripts\2to3.py -w

那么我应该使用什么命令?

0 投票
1 回答
151 浏览

python - 如何将“__slots__”从 Python 2 移植到 3

我必须将遗留代码(~60K LOC)从 Python 2 移植到 3,它有几千个结构,如下所示:

此代码适用于 Python 2,但不能使用 Python 3 编译,要解决它,我需要将其更改为

鉴于必须对如此大的文件多次执行此更改,什么是处理此更改的有效方法?

我们必须考虑到该类可能已经有也可能没有__init__函数定义,并且也可以有嵌套的类定义。

这是我到目前为止所尝试的。

  • 2to3不认为这是一个问题,因此不会改变它。
  • 一种可能的方法是使用ast模块来修改内存中的解析树,然后用它unparse来写回修改后的代码。但这并不简单。
  • 如果没有其他工作,我会考虑编写一个简单的 Shell/Python 脚本,它将读取源文件、进行更改并将其写回。

是否有另一种快速简单的方法来处理此更改。