如何使用3to2

时间:2015-12-08 23:23:57

标签: python python-3.x

我必须将我的一些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,就像我在其他问题的答案中看到的那样仍然无效。使用它的正确方法是什么?

4 个答案:

答案 0 :(得分:6)

有同样的问题,以及我如何解决它:

  1. pip install 3to2
  2. 将3to2重命名为3to2.py(可在Python目录的Scripts文件夹中找到)
  3. 打开终端窗口并运行3to2.py -w [file]
  4. 注意:您将要么必须与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以转换作为参数给定的./3to2stdin),文件或目录。默认情况下,该工具在标准输出上输出统一的差异格式补丁,并在标准错误上输出“更改内容”摘要,但是可以使用-选项写回转换后的文件,从而创建-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.

资源: