Python 环境与包管理工作流
太阳作者太阳
原创内容采用 CC-4.0 协议发布,转载请注明出处
Pythonuvpipvenvconda

Python 环境与包管理工作流

新项目优先用 uv;已有 requirements.txt 的项目继续用 venv + pip;需要 CUDA 或其他非 Python 库时再用 conda。不要在同一个项目里叠加多套环境管理工具。

开始前先确认当前环境

安装依赖前,先确认当前终端使用的解释器和 pip:

python --version
python -c "import sys; print(sys.executable)"
python -m pip --version

安装包时使用 python -m pip,可以避免 pythonpip 指向不同环境。

日常项目优先使用 uv

安装 uv

macOS 和 Linux:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows PowerShell:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

也可以使用 WinGet:

winget install --id=astral-sh.uv -e
uv --version

官方脚本安装的 uv 使用 uv self update 更新;WinGet、Homebrew 等渠道安装的版本仍由原包管理器更新。

使用 uv 安装 Python

查看可用版本和本机已安装版本:

uv python list
uv python list --only-installed

安装指定次版本:

uv python install 3.14

3.14 会选择最新的 3.14.x。默认只创建 python3.14 这类版本化命令;需要全局的 pythonpython3 时,显式启用 --default

uv python install 3.14 --default --preview-features python-install-default

--default 仍是实验功能;--preview-features 表示接受当前行为并关闭警告。若终端找不到新命令:

uv python update-shell

重新打开终端后检查版本和路径:

Get-Command python -All
python --version

uv 不会覆盖其他工具安装的同名程序。如果 python 仍指向旧版本,先检查 PATH,不要直接使用 --force

为项目固定 Python 版本

uv init --python 3.14 example
cd example
uv run python --version

uv init 会创建 pyproject.toml.python-version。已有项目使用:

cd existing-project
uv python pin 3.14
uv sync

.python-version 可以提交到版本库,但必须与 pyproject.toml 中的 requires-python 兼容。

创建项目并管理依赖

uv add httpx
uv run python main.py

uv add 更新 pyproject.tomluv.lock。拉取已有项目后,用 uv sync 按锁文件同步环境。只创建虚拟环境时使用 uv venv

# 同步已有项目
uv sync

# 只创建虚拟环境
uv venv

多数情况下无需激活环境,直接用 uv run <command>

清理 uv 缓存

# 回收无用缓存
uv cache prune

# 清空全部缓存
uv cache clean

平时使用 prune 回收无用缓存;只有缓存损坏或需要彻底释放空间时才用 clean

传统项目使用 venv 与 pip

创建和激活虚拟环境

python -m venv .venv

macOS 和 Linux:

source .venv/bin/activate

Windows PowerShell:

.venv\Scripts\Activate.ps1

安装依赖

python -m pip install --upgrade pip
python -m pip install -r requirements.txt

导出当前环境:

python -m pip freeze > requirements.txt

freeze 会记录所有已安装包,不区分直接依赖和间接依赖。新项目需要锁文件时直接用 uv。

配置镜像

# 设置和查看镜像
python -m pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
python -m pip config list

# 恢复 PyPI 并检查配置
python -m pip config unset global.index-url
python -m pip config debug

全局镜像影响本机所有项目。安装失败时先用 pip config debug 检查实际配置。

查看和清理 pip 缓存

python -m pip cache info
python -m pip cache purge

只在磁盘空间紧张或缓存异常时执行 purge

非 Python 依赖较多时使用 conda

安装 Miniconda

Windows:

winget install --id Anaconda.Miniconda3 --exact

Linux x86-64:

curl -LO https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh -b -p "$HOME/miniconda3"

安装后不要执行 conda init。普通终端不会加载 conda。

需要时运行

# Windows PowerShell
$CondaExe = "$env:USERPROFILE\miniconda3\Scripts\conda.exe"
& $CondaExe create -n py311 python=3.11
& $CondaExe run -n py311 python --version
# Linux
"$HOME/miniconda3/bin/conda" create -n py311 python=3.11
"$HOME/miniconda3/bin/conda" run -n py311 python --version

conda run 不需要激活环境,也不会影响终端启动速度。如果以前执行过 conda init,撤销初始化后重新打开终端:

& "$env:USERPROFILE\miniconda3\Scripts\conda.exe" init --reverse powershell
"$HOME/miniconda3/bin/conda" init --reverse bash

如何选择

场景 建议工具
新建普通 Python 应用或工具 uv
已有 requirements.txt 的传统项目 venv + pip
只需要一个轻量、隔离的运行环境 venv 或 uv venv
需要 CUDA、编译库或其他非 Python 包 conda
同时维护多个 Python 版本 uv、pyenv 或 conda,选择一种作为主要入口

一个项目只选一套环境管理方式,并提交对应的锁文件或依赖文件。

参考资料