- 升级现有 Python 2 代码库:将旧项目的代码修改,使其能在 Python 3 上运行。
- 在开发环境中安装和使用 Python 3:在你的电脑上安装 Python 3,并配置好开发环境,开始编写或运行 Python 3 代码。
下面我将详细讲解这两个场景。

升级现有 Python 2 代码库
这是最复杂、最核心的一步,Python 2 和 Python 3 之间存在一些不兼容的语法变更,直接运行 Python 2 代码几乎一定会报错。
核心工具:2to3
Python 官方提供了一个名为 2to3 的脚本,它可以自动将大部分 Python 2 代码转换为 Python 3 代码。
使用步骤:
-
安装
lib2to3: 在 Python 2 的环境中,lib2to3通常是标准库的一部分,无需单独安装。
(图片来源网络,侵删) -
运行
2to3: 假设你的项目代码在/path/to/your/project目录下,打开终端,运行以下命令:# -w 参数会直接修改源文件,而不是生成新文件,请先备份你的代码! # -n 参数可以生成新文件而不修改原文件,适合第一次尝试。 # --add-suffix 指定转换后文件的后缀,.py3 2to3 -w /path/to/your/project
-
2to3能做什么,不能做什么?-
能做的(自动修复):
print语句:print "hello"->print("hello")- 整数除法:
3 / 2->3 / 2(结果是 1.5,不再是 1) - Unicode 字符串:
"你好"(在 Python 2 中是unicode类型,在 Python 3 中是str类型) xrange->rangeexcept Exception, e:->except Exception as e:raise Error, "message"->raise Error("message")- 其他许多语法上的微小变化。
-
不能做的(需要手动处理):
(图片来源网络,侵删)- 第三方库依赖:如果你的项目依赖了 Python 2 的库,
2to3无法帮你升级这些库,你需要找到它们的 Python 3 兼容版本,或者寻找替代品。 - API 变更:
urllib和urllib2在 Python 3 中被重构成了urllib.request,urllib.parse等。2to3可能能处理一部分,但复杂的逻辑需要你手动查阅文档并修改。 hasattr的行为:在 Python 3 中,hasattr检查的属性在获取时抛出异常,它也会抛出异常,这与 Python 2 的行为不同。iter和next:迭代器的实现方式有细微差别。
- 第三方库依赖:如果你的项目依赖了 Python 2 的库,
-
升级流程(推荐)
-
备份!备份!备份! 在进行任何修改之前,请务必完整地备份你的项目代码。
-
环境隔离: 强烈建议使用虚拟环境来操作,避免污染你的系统 Python。
# 安装 virtualenv (如果还没有) pip install virtualenv # 创建一个虚拟环境 virtualenv my_project_env -p python2 # 使用 Python 2 创建环境,以便后续对比 source my_project_env/bin/activate # 激活环境
-
安装依赖: 在虚拟环境中,安装你的项目所有依赖。
pip install -r requirements.txt
-
运行测试: 确保你的 Python 2 项目在当前环境下所有测试都通过,这是你的“基准线”。
-
安装 Python 3: 确保你的系统上已经安装了 Python 3,如果没有,请先安装它。
-
创建 Python 3 虚拟环境:
deactivate # 先退出 Python 2 环境 virtualenv my_project_env_py3 -p python3 # 创建一个 Python 3 的环境 source my_project_env_py3/bin/activate # 激活
-
复制代码: 将你的备份代码复制到这个新的 Python 3 虚拟环境中。
-
运行
2to3:# 先尝试 -n 参数,看看会生成什么变化 2to3 -n /path/to/your/project_code_in_py3_env # 确认无误后,使用 -w 参数进行实际修改 2to3 -w /path/to/your/project_code_in_py3_env
-
手动修复和测试:
- 运行你的测试套件,几乎肯定会失败。
- 根据错误信息,结合
2to3的输出,手动修复代码,这是最耗时的一步。 - 重点关注
import语句、print函数的用法、字典的.iteritems()方法(改为.items())等。 - 重新安装依赖库,使用
pip install -r requirements.txt,很多库会自动安装兼容 Python 3 的版本,如果某个库没有,你需要去 PyPI 上找替代品(six,future,enum34等)。
-
持续迭代: 修复、运行测试、再修复,直到所有测试通过。
在开发环境中安装和使用 Python 3
对于新项目,或者你想开始使用 Python 3,你需要在自己的电脑上配置好环境。
安装 Python 3
macOS:
- 推荐使用 Homebrew 来安装:
brew install python3 - 系统自带的 Python 2 通常不建议动它。
Linux (Ubuntu/Debian):
sudo apt updatesudo apt install python3 python3-pip python3-venvpython3-venv是创建虚拟环境的标准工具。
Windows:
- 访问 Python 官网 下载最新的 Python 3 安装包。
- 重要! 在安装界面,务必勾选 "Add Python to PATH" 选项,这样你就可以在命令行中直接使用
python命令。
验证安装
打开终端 (Windows 是 CMD 或 PowerShell),输入:
# 检查版本 python --version # 或 python3 --version # 应该显示类似 Python 3.10.x 的版本 # 检查 pip 版本 pip --version # 或 pip3 --version # 应该显示 pip 对应的 Python 3 版本
使用虚拟环境(最佳实践)
为什么用虚拟环境? 它能为你每个项目创建一个隔离的 Python 环境,避免不同项目之间的库版本冲突。
如何创建和使用:
-
创建项目目录并进入
mkdir my_new_project cd my_new_project
-
创建虚拟环境
- Linux/macOS:
python3 -m venv venv
- Windows:
python -m venv venv
- Linux/macOS:
-
激活虚拟环境
- Linux/macOS:
source venv/bin/activate
- Windows:
.\venv\Scripts\activate
激活后,你的命令行提示符前面会出现
(venv),表示虚拟环境已激活。
- Linux/macOS:
-
安装库 现在在这个环境中安装的库只影响当前项目。
# 安装一个库 pip install requests # 安装特定版本 pip install numpy==1.21.0 # 从 requirements.txt 文件安装 pip install -r requirements.txt
-
退出虚拟环境
deactivate
总结与最佳实践
- 立即停止使用 Python 2:除非你有无法迁移的遗留系统,否则所有新项目都应直接使用 Python 3。
