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 使用目标环境
⸻