杰瑞科技汇

Python和python3命令有啥区别?

  • 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
    • 在这些系统上,pythonpython3 实际上是同一个命令,都指向 Python 3.x。
    • 这种做法是为了兼容一些旧脚本,让它们在不修改 shebang (第一行的 #!/usr/bin/env python) 的情况下也能在新系统上运行。
  • 自定义配置

    • 用户或系统管理员可以通过修改 PATH 环境变量或创建符号链接,让 python 指向任何他们想要的版本(Python 2)。

为什么会有两个命令?—— Python 2 与 Python 3 的历史

这是理解这个问题的关键。

  1. Python 2 (2000-2025):曾是主流版本,但存在一些设计缺陷(字符串和字节处理混乱,整除 返回浮点数等)。
  2. Python 3 (2008-至今):发布于2008年,是一个不向后兼容的重大升级,它修复了 Python 2 的许多设计缺陷,引入了更清晰、更现代的语言特性。
  3. 漫长的过渡期:由于大量现有项目基于 Python 2,且迁移成本很高,Python 2 和 Python 3 长期并存了十多年。
  4. Python 2 停止支持2025年1月1日,官方正式停止对 Python 2 的支持,不再提供任何安全补丁或更新,这意味着所有新项目都应该使用 Python 3。

这个历史遗留问题导致了 pythonpython3 命令的长期共存。


实践中的建议和最佳实践

如何检查你的系统中 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.10
    • python 是 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.10
    • pythonpython3 的一个别名,两者都是 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 的习惯,这将避免未来无数潜在的麻烦。

分享:
扫描分享到社交APP
上一篇
下一篇