#python 环境 - uv + conda
uv python list — 列出uv支持的python版本 uv python install cpython3.12 — 安装某个python版本 (3.12) uv run -p 3.12 xxx.py — 使用特定版本python运行xxx.py uv run -p 3.12 python — 运行python交互界面 uv run xxx.py — 使用系统python或当前工程的虚拟环境运行xxx.py uv init — 创建工程 uv add pydantic_ai — 添加依赖 (pydantic_ai) uv tree — 打印依赖树 uv remove pydantic_ai — 删除依赖 uv build — 编译工程
项目管理(推荐方式)
uv 支持以 pyproject.toml 为中心的现代项目管理方式,这是比 pip 模式更推荐的使用方法,尤其适合团队协作和多环境部署。
初始化项目
uv init my_project
cd my_project
这会创建以下基本项目结构:
my_project/
├── pyproject.toml # 项目配置和依赖声明
├── .python-version # 固定 Python 版本
├── README.md
└── main.py
添加和移除依赖
在项目模式下,推荐使用 uv add 和 uv remove 管理依赖,它们会自动更新 pyproject.toml 和 uv.lock:
# 添加生产依赖
uv add requests
# 添加指定版本的依赖
uv add "requests>=2.31.0"
# 添加开发依赖(只在开发环境使用,如测试框架)
uv add --dev pytest ruff
# 移除依赖
uv remove requests
安装项目全部依赖(uv sync)
克隆项目或更新 pyproject.toml 后,运行以下命令一键安装所有依赖:
uv sync
uv sync 说明:类似于 pip install -r requirements.txt,它会根据 pyproject.toml 和 uv.lock 安装所有依赖,确保环境与其他开发者完全一致。如果安装速度慢,可以在 pyproject.toml 中设置国内镜像源:
[tool.uv]
index-url = "https://pypi.tuna.tsinghua.edu.cn/simple"
生成/更新锁文件
uv lock
该命令会解析 pyproject.toml 中的依赖并生成(或更新)uv.lock 文件。uv.lock 应该提交到版本库,确保团队所有成员使用完全相同的依赖版本。
#以下失效
TL;DR:Python 多环境(virtualenv、venv、conda 等)靠 激活 (activate) 来切换。激活就是修改当前终端的环境变量(主要是 PATH),让你用的 python 和 pip 指向指定环境。
⸻
🔎 常见环境管理方式
#1. venv / virtualenv(官方/经典做法)
- 创建环境: python3 -m venv myenv
会生成一个 myenv/ 文件夹,里面有独立的 Python 和 site-packages。
激活环境: macOS/Linux: source myenv/bin/activate
退出环境: deactivate
⸻
#2. conda(Anaconda/Miniconda)
创建环境: conda create -p ./env python=3.11 -y 存储在当前项目目录
激活环境: conda activate ./env
退出环境: conda deactivate
⸻
#3. pyenv(多 Python 版本管理)
- 安装不同版本:
pyenv install 3.11.9 pyenv install 3.12.2
- 设置全局/项目/本地版本:
pyenv global 3.11.9 pyenv local 3.12.2 pyenv shell 3.11.9
- 搭配 pyenv-virtualenv 可以直接创建虚拟环境并激活。
⸻
⚙️ “激活 (activate)” 本质 • 修改 PATH,让当前终端里输入 python 和 pip 时,指向对应环境的可执行文件 • 设置环境变量(如 VIRTUAL_ENV),便于工具检测你在哪个环境
比如 source myenv/bin/activate 后,which python 会变成:
/你的路径/myenv/bin/python
退出后才会恢复系统默认 Python。
⸻
✅ 总结 • venv/virtualenv → 轻量,官方推荐,适合单项目 • conda → 强大,跨语言依赖管理,适合科学计算 • pyenv → 主要管 Python 版本,常配合虚拟环境使用 • activate = 切换 PATH,让当前 shell 使用目标环境
⸻