Ubuntu中Python环境的配置
发表于|更新于
|浏览量:
准备工作 & 核心原则
环境
⚠️ 核心注意事项:绝对隔离原则
操作系统中很多系统工具是依赖于系统的自带 Python(System Python)的,对它只看不摸。千万不要用系统 Python 去跑业务代码,也不要用 sudo pip install 往里面装包。 无论是使用现代的 uv 还是传统的 pyenv,核心目的都是为了实现环境的完全隔离。
方案一:现代极速方案(基于 uv,强烈推荐)
uv 是一个由 Rust 编写的极速 Python 包和项目管理器。它可以一站式替代下文传统方案中的 pyenv、pipx 和 Poetry,且无需繁琐的系统级编译依赖。
1. 安装 uv (一体化工具)
uv 会直接拉取预编译好的 Python 二进制文件,跳过漫长的源码编译过程。
1 2 3 4 5 6
| curl -LsSf https://astral.sh/uv/install.sh | sh
source ~/.zshrc
|
2. 管理 Python 版本 (替代 Pyenv)
1 2 3 4 5 6 7 8 9
| uv python list
uv python install 3.13.12
uv python pin 3.13.12
|
3. 管理全局命令行工具 (替代 Pipx)
用于全局安装独立的 Python 命令行软件(如 ruff, httpie),自动隔离,不污染系统。
4. 项目与依赖管理 (替代 Poetry)
uv 原生支持 pyproject.toml 标准,默认在项目下创建 .venv。
1 2 3 4 5 6 7 8 9 10
| uv init my_project cd my_project
uv add fastapi
uv run main.py
|
方案二:传统经典方案(Pipx + Pyenv + Poetry)
如果你需要维护老旧的系统,或者偏好每个工具各司其职的 Unix 哲学,可以使用这套久经考验的经典组合。
1. 安装系统依赖 + Pipx
准备构建 Python 缺少的底层库,并安装全局工具管理器 Pipx。
1 2 3 4 5 6 7 8 9 10 11 12
| sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential libssl-dev zlib1g-dev \ libbz2-dev libreadline-dev libsqlite3-dev curl \ libncursesw5-dev xz-utils tk-dev libxml2-dev libxmlsec1-dev \ libffi-dev liblzma-dev git
sudo apt install -y pipx pipx ensurepath
|
2. 安装 Pyenv 并配置 Zsh
用于管理多个 Python 解释器版本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| curl -fsSL https://pyenv.run | bash
echo '' >> ~/.zshrc echo '# Pyenv Configuration' >> ~/.zshrc echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc echo '[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc echo 'eval "$(pyenv init -)"' >> ~/.zshrc echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.zshrc
source ~/.zshrc
|
3. 编译安装 Python 3.13.12
1 2 3 4 5 6 7 8
| pyenv update pyenv install 3.13.12
pyenv global 3.13.12 python --version
|
4. 安装 Poetry (通过 Pipx)
用于具体项目的依赖管理。
1 2 3 4 5 6
| pipx install poetry
poetry config virtualenvs.in-project true
|
总结与架构对比
方案对比表
| 特性 | 方案一:现代方案 (uv) | 方案二:传统方案 |
|---|
| 核心工具链 | uv (All-in-one) | apt, pipx, pyenv, Poetry |
| 安装速度 | ⚡ 极快 (直接下载预编译二进制包) | 🐢 较慢 (需从源码编译 Python 解释器) |
| 系统依赖 | 几乎为零 | 需要安装大量 build-essential 等 C 库 |
| 上手难度 | 平缓 (只需掌握少量 uv 命令) | 较高 (需理解三个不同工具的边界与配合) |
架构演进图
传统方案架构 (多工具协作):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| +-------------------------------------------------------+ | System Python (系统底层,给操作系统用的,别碰!) | +-------------------------------------------------------+ ^ | (完全隔离) v +-------------------------------------------------------+ | Pyenv (提供各种纯净的 Python 版本供上层使用) | +-------------------------------------------------------+ | +------------------------+ v v +----------------------+ +----------------------------+ | Pipx (装工具) | | Poetry (装库) | | 管理全局命令行软件 | | 管理具体项目的依赖 | +----------------------+ +----------------------------+
|
现代方案架构 (uv 一体化):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| +-------------------------------------------------------+ | System Python (系统底层,给操作系统用的,别碰!) | +-------------------------------------------------------+ ^ | (完全隔离) v +-------------------------------------------------------+ | uv (核心管家:版本管理 + 虚拟环境 + 依赖解析 + 工具安装) | +-------------------------------------------------------+ | +------------------------+ v v +----------------------+ +----------------------------+ | uv tool (装工具) | | uv project (装项目库) | | 替代 Pipx | | 替代 Poetry | +----------------------+ +----------------------------+
|