在终端输入 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,避免和系统自带的冲突

简单来说:

命令指向来源
pythonPython 2.7.x系统自带(macOS/Linux)
python3Python 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 的版本了。

方法二:永久别名(推荐)

  1. 打开你的 shell 配置文件:

    • Bash~/.bashrc 或 ~/.bash_profile

    • Zsh~/.zshrc(macOS Catalina 及以后默认是 Zsh)

    bash

    nano ~/.zshrc
    # 或者用你喜欢的编辑器
  2. 在文件末尾添加一行:

    bash

    alias python=python3
  3. 保存文件,然后让配置生效:

    bash

    source ~/.zshrc
    # 或 source ~/.bashrc
  4. 测试:

    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

  • 没有 python vs python3 的困扰

  • 如果遇到问题,通常是忘记勾选 PATH(详见问题1)

💡 如果 Windows 上也想用 python3 命令,可以自己创建一个批处理文件,但一般不需要。


🐍 五、Python 2 和 Python 3 的核心区别

虽然我们现在主要用 Python 3,但了解两者的区别有助于你理解为什么会有 python 和 python3 两个命令。

区别Python 2Python 3
print 语法print "Hello"print("Hello")
整数除法5 / 2 = 25 / 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 不要删,系统工具可能依赖它
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐