我必须将我的一些python 3文件转换为2类,但我无法弄清楚如何使用3to2。我做了pip install 3to2
并且说它成功了。它安装2个文件夹3to2-1.1.1.dist-info和lib3to2。我已经尝试过python 3to2 file_name
,`python lib3to2 file_name'我也尝试将文件夹更改为3to2.py,就像我在其他问题的答案中看到的那样仍然无效。使用它的正确方法是什么?
答案 0 :(得分:6)
有同样的问题,以及我如何解决它:
3to2.py -w [file]
注意:您将要么必须与3to2.py位于同一文件夹中,要么在尝试运行它时提供完整路径。您要转换的文件的路径也是如此。解决这个问题的简单方法是将3to2.py复制到py文件所在的文件夹中,然后在该文件夹中运行命令。使用3to2.py --help
获取有关脚本如何工作的信息。
答案 1 :(得分:2)
Linux用户注意事项:
在Linux上,3to2旨在作为独立脚本运行。也就是说,您需要做的就是运行:
3to2 <file_name>
从命令行。也就是说,在linux上,没有必要运行:
python 3to2 <file_name>
答案 2 :(得分:0)
在MacOS中,我安装了anaconda软件包管理器,因此在Traceback (most recent call last):
File "/usr/lib/python3.5/runpy.py", line 184, in _run_module_as_main
"__main__", mod_spec)
File "/usr/lib/python3.5/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/var/www/html/ugame-server/server.py", line 1, in <module>
from http.server import BaseHTTPRequestHandler, HTTPServer
File "/var/www/html/ugame-server/http/server.py", line 92, in <module>
import http.client
File "/var/www/html/ugame-server/http/client.py", line 1063
chunk = f'{len(chunk):X}\r\n'.encode('ascii') + chunk \
^
SyntaxError: invalid syntax
之后,我在pip install 3to2
找到了可执行文件
运行/Users/<username>/anaconda3/bin/3to2
以转换作为参数给定的./3to2
(stdin
),文件或目录。默认情况下,该工具在标准输出上输出统一的差异格式补丁,并在标准错误上输出“更改内容”摘要,但是可以使用-
选项写回转换后的文件,从而创建-w
命名的备份文件。
在Windows中,其.bak
在文件C:\Python27\Scripts\
中
通过调用python 3to2
在控制台上显示差异来运行,或使用python 3to2 <filetoconvert>
选项将转换后的文件写回同一文件。
答案 3 :(得分:0)
我通常使用python2.7,但是找到了我要使用的仅适用于python 3的软件包。
这是我使用MacOS所做的:
mkvirtualenv --python=`which python3` python3-3to2 # Create a new virtual env using mkvirtualenv which use python 3 (mkvirtualenv was already installed)
pip install 3to2
which 3to2 # /usr/local/bin/3to2
/usr/local/bin/3to2 -w metabase/metabase.py
这更新了metabase/metabase.py
(转换为python 2)并创建了metabase/metabase.py.bak
(python 3中的原始文件)
注意:Python 3是3to2正常运行的必要条件,请参见“用法”部分:
This branch of 3to2 must be run with Python 3.
资源: