python3:明确指向系统中安装的 Python 3.x 版本。这是现在和未来推荐使用的命令。python:指向哪个版本不确定,它取决于系统的配置,在旧系统上可能指向 Python 2,在新系统上可能指向 Python 3。
详细解释
python3 命令
这是最明确、最安全的方式。
-
作用:直接调用系统中的 Python 3 解释器。
-
优点:
- 清晰明确:无论系统如何配置,
python3永远执行的是 Python 3 代码。 - 避免混淆:在同时安装了 Python 2 和 Python 3 的现代系统上,可以避免误用旧版本。
- 清晰明确:无论系统如何配置,
-
使用场景:
- 所有新项目、新脚本都应使用
python3。 - 当你需要确保代码在 Python 3 环境下运行时。
- 所有新项目、新脚本都应使用
-
示例:
# 使用 python3 运行一个脚本 python3 my_script.py # 使用 python3 启动交互式解释器 python3
python 命令
这个命令的行为是可变的,主要取决于操作系统的发行版和配置。
-
旧系统(如 Ubuntu 16.04 及更早版本)
- 在这些系统中,
python默认指向 Python 2.x(通常是python2.7)。 - 因为在那个时代,Python 2 是主流,Python 3 还不够普及。
- 如果你尝试在这些系统上运行 Python 3 代码,很可能会因为语法不兼容而报错。
- 在这些系统中,
-
现代系统(如 Ubuntu 18.04+, macOS, CentOS 8+)
- 在这些系统中,
python通常通过一个名为python-is-python3的包(或类似机制)被符号链接(symlink)到了python3。 - 在这些系统上,
python和python3实际上是同一个命令,都指向 Python 3.x。 - 这种做法是为了兼容一些旧脚本,让它们在不修改
shebang(第一行的#!/usr/bin/env python) 的情况下也能在新系统上运行。
- 在这些系统中,
-
自定义配置
- 用户或系统管理员可以通过修改
PATH环境变量或创建符号链接,让python指向任何他们想要的版本(Python 2)。
- 用户或系统管理员可以通过修改
为什么会有两个命令?—— Python 2 与 Python 3 的历史
这是理解这个问题的关键。
- Python 2 (2000-2025):曾是主流版本,但存在一些设计缺陷(字符串和字节处理混乱,整除 返回浮点数等)。
- Python 3 (2008-至今):发布于2008年,是一个不向后兼容的重大升级,它修复了 Python 2 的许多设计缺陷,引入了更清晰、更现代的语言特性。
- 漫长的过渡期:由于大量现有项目基于 Python 2,且迁移成本很高,Python 2 和 Python 3 长期并存了十多年。
- Python 2 停止支持:2025年1月1日,官方正式停止对 Python 2 的支持,不再提供任何安全补丁或更新,这意味着所有新项目都应该使用 Python 3。
这个历史遗留问题导致了 python 和 python3 命令的长期共存。
实践中的建议和最佳实践
如何检查你的系统中 python 指向哪里?
这是最重要的第一步,打开终端,运行以下命令:
# 查看 python 命令指向的可执行文件路径 which python # 查看 python3 命令指向的可执行文件路径 which python3 # 查看具体指向的版本号 python --version python3 --version
可能的输出示例:
-
旧系统:
$ which python /usr/bin/python $ which python3 /usr/bin/python3 $ python --version Python 2.7.18 $ python3 --version Python 3.8.10python是 Python 2,python3是 Python 3。
-
现代系统:
$ which python /usr/bin/python $ which python3 /usr/bin/python3 $ ls -la /usr/bin/python # 查看符号链接 lrwxrwxrwx 1 root root 7 May 15 2025 /usr/bin/python -> python3 $ python --version Python 3.8.10 $ python3 --version Python 3.8.10python是python3的一个别名,两者都是 Python 3。
作为开发者,我该用哪个?
统一使用 python3。
- 明确性:你的代码、你的脚本、你的
Dockerfile、你的CI/CD流水线,都明确声明需要 Python 3 环境,这消除了所有的不确定性。 - 可移植性:无论你的代码被放到哪个 Linux 发行版(无论是旧版还是新版),使用
python3都能保证正确执行。 - 未来导向:Python 2 已死,所有未来的开发都在 Python 3 上。
python3是未来的标准。
脚本中的 shebang (第一行)
在编写可执行的 Python 脚本时,第一行应该明确指定解释器。
-
推荐写法(面向未来):
#!/usr/bin/env python3
- 优点:
env会在系统的PATH环境变量中查找python3命令,这种方式非常灵活,脚本可以在任何正确安装了python3的系统上运行,无论python3的具体安装路径是什么(/usr/bin/python3,/usr/local/bin/python3等)。
- 优点:
-
不推荐的写法(不够灵活):
#!/usr/bin/python3
- 缺点:硬编码了路径,如果某些系统(如在容器中)将
python3安装在其他位置(如/opt/conda/bin/python3),这个脚本就会失败。
- 缺点:硬编码了路径,如果某些系统(如在容器中)将
总结表格
| 命令 | 指向的版本 | 优点 | 缺点 | 推荐场景 |
|---|---|---|---|---|
python3 |
明确为 Python 3 | 清晰、安全、可移植、面向未来 | 无 | 所有新项目、新脚本的首选 |
python |
不确定 (取决于系统) | 在某些系统上可以少打一个字符 | 模糊、不明确、可能导致版本错误 | 仅在确认系统已将其配置为指向 Python 3 时使用,否则不推荐 |
最终建议:养成使用 python3 的习惯,这将避免未来无数潜在的麻烦。
