简介
本文主要介绍Linux系统和Windows系统下Python2代码转换为Python3代码工具2to3.py或2to3指令使用指南。
项目场景及问题描述
Python2的最后一个版本是2.7,在2020年彻底停止支持。有些环境不方便同时安装Python2和Python3,或者在使用Python3的环境下,不想再安装Python2,但是有的项目代码是基于Python2的,想要将其中Python2独有的代码部分转换为Python3可执行的代码,但工程量工作量较大,下面介绍Python3标准库自带的脚本 2to3.py
或指令 2to3
的使用方法。
Windows环境使用2to3.py
2to3.py
这个脚本通常会和Python解释器一起安装,位置在当前环境Python路径的Tools/scripts目录中。 (如:D:\Anaconda\anaconda3\Tools\scripts)
以 E:\workspace\pycharm\Vera 文件夹下有基于Python2写的代码VeraCode.py, Aaa.py, Bbb.py, Ccc.py为例。
1、将单个Python2代码转为Python3代码可用指令:
python 2to3.py E:\workspace\pycharm\Vera\VeraCode.py
指令执行后的VeraCode.py中Python2的语法将被修改为Python3的代码。
2、将单个Python2代码转为Python3代码并备份原代码可用指令:
python 2to3.py -w E:\workspace\pycharm\Vera\VeraCode.py
指令执行后,VeraCode.py中Python2的语法将被修改为Python3的代码,原代码备份为VeraCode.py.bak。
其中参数 -w
即备份原来代码,可从以下2to3.py的代码中看出,还有其他参数可自行查看
parser.add_option("-w", "--write", action="store_true",
help="Write back modified files")
3、将整个文件夹下所有Python2代码转为Python3代码并备份原代码可用指令:
python 2to3.py -w E:\workspace\pycharm\Vera
如果项目目录中Python文件很多,不需要备份,可以不使用参数 -w
。
Linux环境使用2to3指令
其实Linux环境中安装Python的目录下也有类似Windows系统的2to3.py脚本。位置在 /usr/lib/python3.10/lib2to3
文件夹,main.py函数。
但Linux环境可以直接使用 2to3
指令。
首先可以先用如下指令查看是否已经安装了 2to3
:
find /usr/local/ -name "2to3"
如果没有,可以用pip安装:
pip install 2to3
安装后,再查看是否安装好可以看到指令 find /usr/local/ -name "2to3"
的执行结果如下:
/usr/local/bin/2to3
接下来,使用方法类似Windows系统。
以 /app/models/Vera 文件夹下有基于Python2写的代码VeraCode.py, Aaa.py, Bbb.py, Ccc.py为例。
1、将单个Python2代码转为Python3代码可用指令:
2to3 /app/models/Vera/VeraCode.py
指令执行后的VeraCode.py中Python2的语法将被修改为Python3的代码。
2、将单个Python2代码转为Python3代码并备份原代码可用指令:
2to3 -w /app/models/Vera/VeraCode.py
指令执行后,VeraCode.py中Python2的语法将被修改为Python3的代码,原代码备份为VeraCode.py.bak。
3、将整个文件夹下所有Python2代码转为Python3代码并备份原代码可用指令:
2to3 -w /app/models/Vera
指令执行后可以看到代码被修改的部分。举个栗子:
参考博客:
python2代码转换为python3
python2 转 python3 代码