在现代操作系统(如 Linux, macOS, Windows 10+)中:

python: 通常是一个指向默认 Python 版本的软链接或快捷方式,在旧系统中,它可能默认指向 Python 2;在新系统中,它很可能已经指向 Python 3。python3: 明确指向系统中安装的 Python 3 版本,这是推荐和更安全的方式,因为它消除了版本混淆。
在不确定或需要明确指定版本时,始终使用 python3,这能确保你的脚本在 Python 3 环境中运行,避免因 Python 2 和 Python 3 的不兼容性(如 print 语句、字符串编码等)导致的错误。
详细解释
python 命令:历史遗留与不确定性
python 命令的历史可以追溯到 Python 2 时代。
-
Python 2 时代 (过去):当 Python 2 是主流和默认版本时,
python命令毫无疑问地指向 Python 2 的可执行文件(/usr/bin/python),这是当时的事实标准。 -
Python 3 时代 (:随着 Python 2 在 2025 年停止官方支持,生态系统全面转向 Python 3,为了方便用户,操作系统和 Python 安装程序开始做以下事情:
(图片来源网络,侵删)- Linux (如 Ubuntu, CentOS): 在安装 Python 3 时,系统管理员或安装脚本可能会创建一个名为
python的软链接,让它指向python3。/usr/bin/python->/usr/bin/python3,这意味着,在这些系统上,python和python3是完全相同的命令。 - macOS: Homebrew 等包管理器在安装 Python 3 时,通常会创建一个
python3命令,系统自带的旧版 Python 2 仍然可能作为python存在,但强烈建议不要使用它。 - Windows: 安装 Python 3 时,安装程序通常会默认将
python命令添加到系统路径,使其指向 Python 3 的可执行文件 (python.exe),它也会添加python3命令。
- Linux (如 Ubuntu, CentOS): 在安装 Python 3 时,系统管理员或安装脚本可能会创建一个名为
python 命令的风险:
最大的问题是不确定性,你无法确定在另一台机器上,或者未来的系统更新后,python 究竟指向哪个版本,如果你写了一个脚本,假设 python Python 3,但在某个旧环境中它指向了 Python 2,你的脚本很可能会因为语法错误而崩溃。
示例: 假设你在 Python 3 环境下写了这段代码:
# my_script.py
print("Hello, World!")
在 python 指向 Python 3 的系统上运行:
$ python my_script.py Hello, World!
在 python 指向 Python 2 的系统上运行:

$ python my_script.py
File "my_script.py", line 1
print("Hello, World!")
^
SyntaxError: Missing parentheses in call to 'print'
这个错误就是 Python 2 和 Python 3 最经典的区别之一。
python3 命令:明确、安全、推荐
python3 命令的设计初衷就是为了消除上述的版本模糊性。
- 明确性:
python3这个名字本身就告诉你,它执行的是 Python 3 解释器,无论系统如何配置,它都指向 Python 3 的可执行文件。 - 安全性:使用
python3可以确保你的脚本始终在预期的 Python 3 环境中运行,避免了因版本不匹配导致的意外错误。 - 兼容性:如果你的系统同时安装了 Python 2 和 Python 3(这在很多服务器和开发环境中很常见),
python3命令可以让你明确地选择使用 Python 3,而python2命令则用于需要运行遗留 Python 2 代码的场景。
示例: 在任何现代系统上,只要你安装了 Python 3,运行以下命令都是可靠和安全的:
$ python3 my_script.py Hello, World!
这会调用 Python 3 解释器来执行 my_script.py,结果完全可预测。
检查你的系统
你可以通过以下命令来检查你的系统中 python 和 python3 分别指向哪里。
在 Linux 或 macOS 上
使用 which 命令查看可执行文件的路径:
# 查看 python 指向哪里 $ which python # 输出可能是 /usr/bin/python 或 /usr/bin/python3 # 查看 python3 指向哪里 $ which python3 # 输出通常是 /usr/bin/python3 # 使用 ls -l 查看软链接关系 $ ls -l /usr/bin/python* # 可能会看到类似这样的输出: # lrwxrwxrwx 1 root root 7 May 15 2025 /usr/bin/python -> python3 # -rwxr-xr-x 1 root root 3879632 May 15 2025 /usr/bin/python3
在 Windows 上
在命令提示符或 PowerShell 中,可以使用 where 命令:
# 查找 python.exe > where python # 输出类似: # C:\Users\YourUser\AppData\Local\Programs\Python\Python39\python.exe # C:\Windows\py.exe (py.exe 是一个启动器,可以更灵活地选择版本) # 查找 python3.exe > where python3 # 输出类似: # C:\Users\YourUser\AppData\Local\Programs\Python\Python39\python3.exe
-
个人开发/学习:在你的个人电脑上,如果系统默认
python指向 Python 3,你可以继续使用python,但养成使用python3的习惯会让你更专业,避免未来踩坑。 -
团队协作/项目部署:必须使用
python3,这是行业标准,在requirements.txt、Dockerfile、CI/CD 配置文件(如.gitlab-ci.yml)、文档和脚本中,都应明确使用python3。 -
编写跨平台脚本:如果你的脚本需要在不同人的机器上运行,或者要在服务器上部署,绝对不要依赖
python,使用python3是保证脚本能被正确执行的最简单方法。 -
虚拟环境:在创建虚拟环境时,明确指定
python3是一个好习惯。# 使用 venv 创建虚拟环境 python3 -m venv my_project_env # 使用 pip 安装包时,也应在虚拟环境中使用 python3 -m pip source my_project_env/bin/activate # (Linux/macOS) my_project_env\Scripts\activate # (Windows) python3 -m pip install requests
python3 是现在和未来的标准,它清晰、无歧义,是编写可靠 Python 代码的基石。
