01 Python 安装这件事,其实没你想的那么简单

这是「Python 包管理全攻略」系列的第一篇。我们从最基础的开始——把 Python 装好。

为什么要单独聊安装?

很多人觉得装 Python 不就是去官网下载安装包,一路 Next 吗?

说实话,我当年也是这么想的。直到后来踩了一堆坑:系统自带的 Python 版本太老、多版本共存搞不定、环境变量配不明白、macOS 升级之后 Python 又炸了……

装 Python 这件事,选择比努力重要。

几种主流的安装方式

1. 官网安装包(最直觉的方式)

python.org 下载对应系统的安装包,双击运行。

Windows 用户注意: 安装界面底部有个勾选项 Add Python to PATH,一定要勾上。不勾的话,你在命令行输入 python 会提示找不到命令。这是新手遇到的第一个坑,每年都有人中招。

macOS 用户注意: 从 macOS 12.3 开始,系统不再自带 Python 2。如果你用老项目依赖 Python 2,需要单独安装。另外,macOS 自带的 python3 命令指向的是 Xcode Command Line Tools 里的版本,版本可能不是你想要的。

官网安装包的优点是什么都不用配,开箱即用。缺点是——如果你想同时用 Python 3.10 和 3.12,就有点头疼了。

2. 通过包管理器安装(推荐日常使用)

macOS 用 Homebrew:

brew install python

简单粗暴,而且后续升级也方便,brew upgrade python 就行。Homebrew 装的 Python 不会和系统自带的打架,这是它最大的优势。

Ubuntu/Debian 用 apt:

sudo apt update
sudo apt install python3 python3-pip python3-venv

注意 python3-venv 这个包一定要装上,后面讲虚拟环境的时候用得到。很多教程不提这个,导致后面 python -m venv 报错,一脸懵。

CentOS/RHEL 用 yum/dnf:

sudo dnf install python3 python3-pip

3. pyenv:多版本管理利器(推荐开发者使用)

如果你做 Python 开发,经常需要在不同项目间切换,而不同项目可能要求不同的 Python 版本——这时候 pyenv 就是你的救星。

安装 pyenv(macOS/Linux):

# 安装 pyenv
curl https://pyenv.run | bash

# 在 ~/.bashrc 或 ~/.zshrc 里加上这几行
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"
eval "$(pyenv init -)"

基本用法:

# 看看能装哪些版本
pyenv install --list

# 装个 Python 3.12.3
pyenv install 3.12.3

# 设为全局默认
pyenv global 3.12.3

# 在某个项目目录下用特定版本
cd my-project
pyenv local 3.10.14

pyenv local 会在当前目录生成一个 .python-version 文件,以后每次进入这个目录,pyenv 自动切换到对应版本。这个功能用过就回不去了。

Windows 用户 可以用 pyenv-win,功能类似,安装方式不同,看官方文档操作就行。

4. 从源码编译(一般用不到)

除非你在做嵌入式、信创环境适配,或者需要一些特殊的编译选项,否则不推荐从源码编译安装。过程不复杂,但编译依赖处理起来比较烦:

wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz
tar -xzf Python-3.12.3.tgz
cd Python-3.12.3
./configure --enable-optimizations
make -j$(nproc)
sudo make altinstall  # 用 altinstall 避免覆盖系统默认的 python3

注意最后用 altinstall 而不是 install,不然可能把系统的 Python 给覆盖了,到时候系统工具用不了别怪我没提醒你。

怎么验证安装成功了?

不管用哪种方式安装,装完之后跑一下这几个命令:

python3 --version     # 看版本号
python3 -c "import sys; print(sys.executable)"  # 看 Python 装在哪
pip3 --version        # 看 pip 有没有

如果你看到版本号正确输出,pip 也有,那就没问题了。

关于 Python 2 的一嘴

2020 年 1 月 1 日,Python 2 已经正式 EOL(End of Life)了。新项目不要用 Python 2,老项目能迁就迁。如果你实在要维护老项目,用 pyenv 装个 Python 2.7 就行,别污染系统环境。

我的建议

  • 只是学 Python、写写脚本: 官网安装包或者 Homebrew/apt 装一下就行
  • 正经做 Python 开发: 上 pyenv,多版本管理太方便了
  • 搞数据科学/机器学习: 直接上 Conda(后面的文章会详细讲)
  • 生产服务器部署: 用系统包管理器安装,稳定可靠

面试题

1. 为什么在 macOS 上推荐用 Homebrew 安装 Python,而不是直接用系统自带的?

系统自带的 Python 版本通常较旧,且 macOS 系统更新可能修改或删除它。用 Homebrew 安装的 Python 独立于系统,升级和管理都更方便,也不会和系统工具产生冲突。

2. pyenv 的 globallocal 命令有什么区别?

pyenv global 设置全局默认的 Python 版本,对所有目录生效。pyenv local 只在当前目录生效,它会在目录下创建一个 .python-version 文件。当两者同时存在时,local 优先级更高。

3. 安装 Python 时,make installmake altinstall 有什么区别?为什么推荐用后者?

make install 会创建 python3 的软链接,可能覆盖系统已有的 Python 3,导致依赖系统 Python 的工具(如 yum)无法工作。make altinstall 不会创建这个软链接,只会安装 python3.x 这样的具体版本命令,更安全。

4. 在 Windows 安装 Python 时,忘记勾选 “Add Python to PATH” 会导致什么问题?怎么修复?

会导致在命令行中输入 python 时提示"不是内部或外部命令"。修复方式有两种:一是重新运行安装程序,勾选该选项;二是手动将 Python 安装路径和 Scripts 目录添加到系统环境变量 PATH 中。


下一篇:pip 与包管理基础——你的第一个包管理工具

更多推荐