Python:python 和 python3 命令有什么区别?
在终端输入
python --version,显示的是Python 2.7.16?
输入python3 --version,显示的却是Python 3.12.2?
为什么我的电脑上有两个Python?该用哪个?这到底是什么情况?
今天一次讲清楚!
🔴 一、问题现象
你在终端(命令行)输入:
bash
python --version
结果看到:
text
Python 2.7.16
但明明记得自己装的是 Python 3.x,于是又试了一下:
bash
python3 --version
结果看到:
text
Python 3.12.2
于是你困惑了:
-
我到底装了几个Python?
-
python和python3到底有什么区别? -
我应该用哪个命令?
💡 这个问题主要出现在 macOS 和 Linux 系统上。Windows 用户一般不会遇到,因为 Windows 默认没有预装 Python。
❓ 二、为什么会这样?
2.1 原因:系统自带了一个旧版 Python
macOS 和大多数 Linux 发行版 都自带了一个 Python 环境。但问题是,它们带的通常是 Python 2.x(老版本),而不是 Python 3.x。
-
系统自带的 Python 2.x 被一些系统工具依赖(比如 macOS 的某些管理工具)
-
所以系统默认把
python命令指向了 Python 2.x -
你自己安装的 Python 3.x 被命名为
python3,避免和系统自带的冲突
简单来说:
| 命令 | 指向 | 来源 |
|---|---|---|
python | Python 2.7.x | 系统自带(macOS/Linux) |
python3 | Python 3.x | 你自己安装的 |
💡 Python 2 已经在 2020年1月1日 停止维护了。所以 Python 2 不应该再被用于任何新项目。
🔧 三、解决方案
3.1 最直接的办法:以后都用 python3
既然 python3 指向的是 Python 3.x(你需要的版本),那就直接使用 python3 命令。
bash
# 查看版本 python3 --version # 运行Python脚本 python3 my_script.py # 进入交互式环境 python3 # 安装第三方库(使用 pip3) pip3 install requests
💡 在 macOS/Linux 上,
pip和pip3也有同样的区别。pip可能指向 Python 2 的 pip,pip3指向 Python 3 的 pip。
3.2 让 python 命令默认指向 Python 3(设置别名)
如果你不想每次打 python3,可以给终端设置一个别名,让 python 自动指向 python3。
方法一:临时别名(只对当前终端会话有效)
bash
alias python=python3
然后输入 python --version 就会显示 Python 3 的版本了。
方法二:永久别名(推荐)
-
打开你的 shell 配置文件:
-
Bash:
~/.bashrc或~/.bash_profile -
Zsh:
~/.zshrc(macOS Catalina 及以后默认是 Zsh)
bash
nano ~/.zshrc # 或者用你喜欢的编辑器
-
-
在文件末尾添加一行:
bash
alias python=python3
-
保存文件,然后让配置生效:
bash
source ~/.zshrc # 或 source ~/.bashrc
-
测试:
bash
python --version # 现在显示的是 Python 3.x
⚠️ 注意:这只是给终端设置了一个“快捷方式”,并没有删除或修改系统自带的 Python 2。系统工具仍然可以正常使用
python2命令。
3.3 使用 pyenv 管理多版本(进阶推荐)
如果以后你需要管理多个 Python 版本(比如项目A用3.9,项目B用3.12),pyenv 是最专业的工具。
bash
# 安装 pyenv(macOS) brew install pyenv # 安装指定版本的 Python pyenv install 3.12.2 # 设置全局默认版本 pyenv global 3.12.2 # 设置当前目录使用的版本 pyenv local 3.9.18
💡
pyenv是专业开发者的标配工具,但新手可以先从python3+ 别名开始。
🪟 四、Windows 用户有这个问题吗?
Windows 用户一般不会遇到这个问题,因为 Windows 默认没有安装任何 Python。
-
Windows 上输入
python通常就是你自己安装的 Python 3.x -
没有
pythonvspython3的困扰 -
如果遇到问题,通常是忘记勾选 PATH(详见问题1)
💡 如果 Windows 上也想用
python3命令,可以自己创建一个批处理文件,但一般不需要。
🐍 五、Python 2 和 Python 3 的核心区别
虽然我们现在主要用 Python 3,但了解两者的区别有助于你理解为什么会有 python 和 python3 两个命令。
| 区别 | Python 2 | Python 3 |
|---|---|---|
print 语法 | print "Hello" | print("Hello") |
| 整数除法 | 5 / 2 = 2 | 5 / 2 = 2.5 |
| Unicode 支持 | 需要 u"中文" | 默认支持中文 |
input() | 返回整数 | 返回字符串 |
| 维护状态 | 已停止维护(2020年1月1日) | 持续更新 |
python
# Python 2 写法(已过时)
print "Hello, World!"
# Python 3 写法(现在都用这个)
print("Hello, World!")
⚠️ 现在写任何新代码,都必须用 Python 3。Python 2 已经绝版了。
🧪 六、如何检查自己到底有几个 Python?
想知道电脑里装了几个 Python,可以用以下命令:
bash
# 查看所有 python 相关命令的位置 which python which python3 which python2 # 查看所有 Python 可执行文件的位置 whereis python # macOS/Linux 查看所有 Python 版本 ls /usr/bin/python* ls /usr/local/bin/python*
示例输出(macOS):
bash
$ which python /usr/bin/python # 系统自带 Python 2 $ which python3 /usr/local/bin/python3 # 自己安装的 Python 3
📋 七、最佳实践建议
| 场景 | 推荐做法 |
|---|---|
| 日常使用 | 直接用 python3 命令,不要用 python |
| 嫌麻烦 | 设置别名 alias python=python3 |
| 写脚本 | 在脚本第一行写 #!/usr/bin/env python3 |
| 项目开发 | 用 pyenv 管理不同项目的 Python 版本 |
| pip 安装 | 用 pip3 而不是 pip(除非设置了别名) |
脚本文件的第一行
如果你写了一个 Python 脚本文件,建议在文件第一行加上:
python
#!/usr/bin/env python3
这行代码告诉系统:用 python3 来执行这个脚本,而不是 python。
❓ 八、常见疑问解答
Q1:我能把系统自带的 Python 2 删掉吗?
千万不要!
macOS 和某些 Linux 系统的部分系统工具依赖 Python 2。删掉可能会导致系统出问题。不要动它,放着就行。
Q2:我输入 python 还是 Python 2,但我想让它默认 Python 3,怎么办?
设置别名(见上面 3.2 节)是最安全的方式。不要修改系统默认的 Python 链接。
Q3:为什么我用 pip install 装到了 Python 2 里?
因为 pip 默认指向 Python 2 的 pip。用 pip3 代替,或者用 python3 -m pip install 包名。
Q4:Windows 上也有 python3 命令吗?
默认没有。但如果你安装了多个 Python 版本,Python 3 的安装程序可能会创建一个 py 命令(Python Launcher),可以用 py -3 指定版本。
Q5:我怎么知道某个命令用的是哪个 Python?
bash
# 查看命令的完整路径 which python which python3 # 直接运行并查看版本 python --version python3 --version
🎯 今日小结
| 要点 | 说明 |
|---|---|
| 区别 | python 通常指向 Python 2(系统自带),python3 指向 Python 3(自己安装的) |
| 建议 | 日常使用 python3 命令 |
| 省事技巧 | 设置别名 alias python=python3 |
| Python 2 状态 | 已停止维护,不要用于新项目 |
| 不要删除 | 系统自带的 Python 2 不要删,系统工具可能依赖它 |
更多推荐



所有评论(0)