Python 环境与包管理指南

Python 环境与包管理指南

整理自对话讨论,涵盖 pip / pipx / uv / venv 的分工与实操命令,适用于日常开发(含 TaxEngine 税务计算脚本、pdf2zh PDF 翻译工具、yt-dlp 等命令行工具的环境管理)。


一、先搞清楚:你装的是"库"还是"工具"

在动手之前,先问自己一个问题:

这个东西是要在代码里 import 用的库,还是要在终端直接敲命令用的工具?

这个判断决定了你该用哪套方案:

类型举例推荐方案
代码里 import 的库pandasrequestsopenpyxlvenv + pip(或 uv venv
终端直接敲命令的工具yt-dlppdf2zhblackpipx(或 uv tool

二、四个工具的角色分工

工具管理对象是否隔离环境是否管理 Python 版本硬盘占用
pip当前激活环境里的库否(装进当前环境)
venv项目专属虚拟环境是(每项目一个)否(复用系统版本)较省
pipx命令行工具是(每工具一个独立环境)否(复用系统版本)较省
uv库 / 项目环境 / 命令行工具 / Python 版本(可自动下载指定版本)较大(每个 Python 版本都要占空间)

一句话总结分工逻辑:

  • pip 不能单独用,必须配合 venv 隔离,否则容易"依赖地狱"(不同项目互相打架)
  • pipx 专门伺候命令行工具,默认优先选它
  • uv 是全能替代品,速度快、还能自动管理 Python 版本,遇到工具对 Python 版本有硬性要求、且和系统默认版本不匹配时(比如 pdf2zh 需要 3.10–3.12),才切换用它

三、场景一:命令行工具(终端直接敲命令)

默认用 pipx

pipx install <工具名>
  • 每个工具自动获得独立虚拟环境,互不冲突
  • 复用系统已有的 Python,比较省硬盘
  • 装完直接全局可用,任意目录都能敲命令

例外:工具对 Python 版本有硬性要求 → 换 uv

比如 pdf2zh(PDF 翻译工具)要求 Python 3.10–3.12,但系统默认是 3.14:

# uv 会自动下载所需版本的 Python,不需要你自己先装
uv tool install --python 3.12 pdf2zh

代价是会多占一些硬盘空间(下载对应版本的 Python 解释器)。

用 pipx 配合手动指定版本也可以(不想装 uv 的话)

# 先用 Homebrew 装好 3.12
brew install [email protected]

# 确认路径
which python3.12

# 用 pipx 指定版本装
pipx install pdf2zh --python /usr/local/bin/python3.12

判断口诀:默认 pipx,遇到版本报错才为那一个工具单独用 uv,其他工具继续用 pipx,两套工具链可以共存,互不影响。


四、场景二:项目里的库依赖(import 用)

标准三步走:venv + pip

1. 创建虚拟环境

进入项目目录,运行:

# 第一个 venv 是工具名,第二个 venv 是环境文件夹名(也可以叫 .venv)
python3 -m venv venv

运行完会在项目目录下多出一个 venv/ 文件夹。

2. 激活虚拟环境(最重要的一步)

操作系统激活命令(在项目根目录运行)
Windows (CMD)venv\Scripts\activate
Windows (PowerShell).\venv\Scripts\Activate.ps1
macOS / Linuxsource venv/bin/activate

激活成功的标志: 命令行提示符前面会出现 (venv) 字样。

3. 安装库并运行脚本

激活后,pip install 装的东西只会留在这个"小房间"里,不会污染系统全局环境:

pip install pandas requests openpyxl
python your_script.py

用完退出:

deactivate

用 uv 替代 venv + pip(更快,语法更简洁)

功能完全等价,但速度快很多(Rust 编写,比 pip 快 10–100 倍):

cd 你的项目目录
uv venv                          # 生成 .venv
source .venv/bin/activate        # 激活方式跟 venv 一致
uv pip install pandas requests   # 装库

注意: uv venv 依然是"在项目目录下运行"的逻辑,跟传统 venv 一样按项目隔离,不是全局通用的方案。真正"不限目录、随处可用"的是 uv tool install(针对命令行工具,见第三节),两者不要混淆。


五、常用进阶操作(venv 通用)

# 退出环境
deactivate

# 导出依赖清单(方便别人一键复现你的环境,或者你换机器时用)
pip freeze > requirements.txt

# 一键恢复环境
pip install -r requirements.txt

避坑指南: 如果项目用 Git 管理,记得在 .gitignore 里加上 venv/(或 .venv/),几百 MB 的环境文件夹不应该传到 GitHub 上。


六、决策速查表

你要做的事推荐方案命令
装终端命令行工具pipxpipx install <工具>
命令行工具但对 Python 版本有硬性要求uvuv tool install --python 3.12 <工具>
项目里写代码要用的库venv + pippython3 -m venv venv && pip install <库>
想要更快的 venv+pip 替代品uvuv venv && uv pip install <库>

七、当前工具归类参考

工具 / 脚本类型推荐方案备注
yt-dlp命令行工具pipx(现状已经是对的,不用动)对 Python 版本无严格要求,装的频率也不高,没必要换 uv
pdf2zh(PDF 翻译)命令行工具,但版本要求特殊uv系统默认 Python 3.14,超出 pdf2zh 要求的 3.10–3.12,需要 uv tool install --python 3.12 pdf2zh
TaxEngine 税务计算脚本 / Wise 相关脚本项目库依赖venv + pip(或 uv venv 替代)用到 pandas 等库,应绑定在项目专属虚拟环境里,避免以后装其他工具时把依赖搅乱

针对 TaxEngine / Wise 脚本的具体操作流程

# 1. 进入代码目录
cd 你的TaxEngine项目目录

# 2. 创建虚拟环境
python3 -m venv venv

# 3. 激活环境
source venv/bin/activate    # macOS/Linux

# 4. 安装依赖
pip install pandas

# 5. 运行脚本
python wise_calc.py -f my_data.csv

# 用完退出
deactivate

如果之后想提速,可以把第 2–4 步替换成 uv 版本:

uv venv
source .venv/bin/activate
uv pip install pandas

八、一图记忆

装的是命令行工具吗?
├─ 是 → 对 Python 版本有要求吗?
│        ├─ 否 → pipx install <工具>
│        └─ 是 → uv tool install --python <版本> <工具>
│
└─ 否(是项目里 import 的库)→ 在项目目录下:
         venv + pip(标准)或 uv venv + uv pip(更快)