Python Environment Management Skill
Core Principles
- 1. Reuse Existing Environments - Don't recreate, reuse existing virtual environments
- Use Project-Type Decision - Auto-select based on lock files
- Recommend by Popularity - uv > pip > conda > venv
- Minimize Interruption - Only ask when necessary
Tool Popularity Ranking
| Priority | Tool | Best For |
|---|
| 🥇 | uv | New projects, fast installs |
| 🥈 |
pip | Compatibility first |
| 🥉 | conda | Data science, specific versions |
| 4 | venv | Built-in, no extra install |
| 5 | poetry | Existing poetry.lock |
| 6 | pipenv | Existing Pipfile (declining) |
Decision Flow
CODEBLOCK0
1. Clear Decisions (Execute Directly, No Ask)
When these files are detected, use the corresponding tool directly:
| Detected File | Execute |
|---|
| INLINECODE0 exists | INLINECODE1 or INLINECODE2 |
| INLINECODE3 exists |
poetry install |
|
environment.yml exists |
conda env create -f environment.yml |
|
Pipfile.lock exists |
pipenv install |
2. Detect Existing Environments (Reuse First)
CODEBLOCK1
Reuse Example:
Detected existing .venv/ directory
→ Activate: source .venv/bin/activate
→ Run: uv pip install <package>
3. When Unclear (Assess Complexity)
| Scenario | Action |
|---|
| Stdlib only, no 3rd party | System Python (python3) |
| Simple pip install test |
System Python (temp) |
| Has requirements.txt | Recommend uv > pip > venv |
| Has pyproject.toml | Recommend uv > pip |
| Multi-file project, needs isolation | Recommend uv |
4. When to Ask User (Only These Cases)
✅ Ask:
- 1. Empty project + first dependency install → Ask which tool
- Both requirements.txt + pyproject.toml → Ask which to use
- User explicitly wants different tool → e.g., "I want conda"
❌ Don't Ask:
- - Has uv.lock but user didn't specify
- Has .venv/ directory
- Regular pip install task
5. Recommended Tool (No Clear Directive)
CODEBLOCK3
Detection Commands
CODEBLOCK4
Interaction Examples (Only When Needed)
CODEBLOCK5
CODEBLOCK6
Quick Command Reference
| Action | uv | pip | conda | venv |
|---|
| Create env | INLINECODE9 | - | INLINECODE10 | INLINECODE11 |
| Install pkg |
uv pip install |
pip install |
conda install |
pip install |
| Install deps |
uv sync |
pip install -r |
conda env create |
pip install -r |
| Activate | (auto) | (auto) |
conda activate |
source venv/bin/activate |
Core Principle
"Do more, ask less" - Execute directly when you can determine, only ask when truly unclear.
Python 环境管理技能
核心原则
- 1. 复用现有环境 - 不要重新创建,复用已有的虚拟环境
- 基于项目类型决策 - 根据锁定文件自动选择
- 按流行度推荐 - uv > pip > conda > venv
- 最小化中断 - 仅在必要时询问
工具流行度排名
pip | 兼容性优先 |
| 🥉 | conda | 数据科学,特定版本 |
| 4 | venv | 内置,无需额外安装 |
| 5 | poetry | 存在 poetry.lock |
| 6 | pipenv | 存在 Pipfile(逐渐淘汰) |
决策流程
┌─────────────────────────────────────┐
│ 检测项目依赖文件 │
└─────────────────────────────────────┘
↓
┌─────────┴─────────┐
↓ ↓
明确决策 不明确
↓ ↓
直接使用 检测现有环境
↓
┌─────┴─────┐
↓ ↓
有环境 无环境
↓ ↓
复用 评估复杂度
↓
┌─────────┴─────────┐
↓ ↓
简单任务 需要依赖
↓ ↓
系统 Python 推荐 uv/conda
1. 明确决策(直接执行,无需询问)
检测到以下文件时,直接使用对应工具:
| 检测到的文件 | 执行操作 |
|---|
| 存在 uv.lock | uv sync 或 uv pip install -r requirements.txt |
| 存在 poetry.lock |
poetry install |
| 存在 environment.yml | conda env create -f environment.yml |
| 存在 Pipfile.lock | pipenv install |
2. 检测现有环境(优先复用)
bash
优先级:uv venv > conda > venv
2.1 检测 uv 虚拟环境
ls -la .venv/ 2>/dev/null && uv pip list 2>/dev/null | head -3
2.2 检测 conda 环境
conda info --envs 2>/dev/null | grep * || echo $CONDA_PREFIX
2.3 检测标准 venv
ls -la venv/ .venv/ env/ 2>/dev/null
2.4 如果存在 → 复用(激活并运行命令)
复用示例:
检测到现有 .venv/ 目录
→ 激活:source .venv/bin/activate
→ 运行:uv pip install
3. 不明确时(评估复杂度)
| 场景 | 操作 |
|---|
| 仅标准库,无第三方库 | 系统 Python(python3) |
| 简单的 pip 安装测试 |
系统 Python(临时) |
| 存在 requirements.txt | 推荐 uv > pip > venv |
| 存在 pyproject.toml | 推荐 uv > pip |
| 多文件项目,需要隔离 | 推荐 uv |
4. 何时询问用户(仅这些情况)
✅ 询问:
- 1. 空项目 + 首次安装依赖 → 询问使用哪个工具
- 同时存在 requirements.txt 和 pyproject.toml → 询问使用哪个
- 用户明确要求不同工具 → 例如:我要用 conda
❌ 不询问:
- - 存在 uv.lock 但用户未指定
- 存在 .venv/ 目录
- 常规 pip 安装任务
5. 推荐工具(无明确指令时)
首选:uv
├── uv venv(创建)
├── uv pip install(安装)
└── uv sync(同步)
备选:pip
├── python3 -m venv .venv
└── pip install
特殊:conda
├── conda create -n envname python=x.x
└── conda env create
检测命令
bash
检查可用工具
which uv
which conda
which pip
which python3
检查项目文件
ls -la *.lock pyproject.toml requirements.txt environment.yml Pipfile 2>/dev/null
检查现有环境
ls -la .venv/ venv/ env/ 2>/dev/null
conda info --envs 2>/dev/null
检查当前环境
echo $VIRTUAL_ENV
echo $CONDA_PREFIX
交互示例(仅在需要时)
🔍 检测结果:
- - 项目文件:pyproject.toml
- 现有环境:无
- 推荐工具:uv(最快)
正在运行:uv pip install
🔍 检测结果:
- - 项目文件:requirements.txt
- 现有环境:无
- 推荐工具:uv
可用选项:
1) uv(推荐)- 更快
2) pip - 兼容性更好
3) venv - 使用标准库
4) conda - 如需特定版本
输入选项或按回车使用推荐工具:
快速命令参考
| 操作 | uv | pip | conda | venv |
|---|
| 创建环境 | uv venv | - | conda create | python3 -m venv |
| 安装包 |
uv pip install | pip install | conda install | pip install |
| 安装依赖 | uv sync | pip install -r | conda env create | pip install -r |
| 激活环境 | (自动) | (自动) | conda activate | source venv/bin/activate |
核心原则
多做事,少询问 - 能确定时直接执行,只有真正不明确时才询问。