Warning
不推荐混用两者,不如 uv+poetry 的方案
Poetry 和 Conda 可以结合使用,但需要明确各自的职责分工。
三种使用策略
策略 1:Conda 管理环境 + Poetry 管理依赖(推荐)
这是最常见也最推荐的方式,使用 Conda 创建环境但不用于包管理,始终使用 Poetry 来安装和更新包以避免工具不同步。
适用场景:
- 需要特定 Python 版本(系统未安装)
- 需要非 Python 依赖(如 CUDA、MKL)
- 机器学习/科学计算项目
配置步骤:
# 1. 创建 Conda 环境(仅指定 Python 版本)
conda create -n myproject python=3.11 -y
conda activate myproject
# 2. 在 Conda 环境中安装 Poetry
pip install poetry
# 3. 配置 Poetry 不创建虚拟环境(使用当前 Conda 环境)
poetry config virtualenvs.create false --local
# 4. 使用 Poetry 管理依赖
poetry init
poetry add fastapi uvicorn
poetry install项目配置文件:
# pyproject.toml
[tool.poetry]
name = "myproject"
version = "0.1.0"
description = ""
[tool.poetry.dependencies]
python = "^3.11"
numpy = "^1.24.0"
pandas = "^2.0.0"
scikit-learn = "^1.3.0"
[tool.poetry.group.dev.dependencies]
pytest = "^7.4.0"
ruff = "^0.1.0"
[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"# environment.yml(可选,用于团队共享 Conda 环境配置)
name: myproject
channels:
- conda-forge
- defaults
dependencies:
- python=3.11
- pip
- pip:
# 不在这里列出 Python 包,使用 Poetry 管理策略 2:完全使用 Poetry(推荐新项目)
如果不需要 Conda 特有功能,完全使用 Poetry 更简洁:
# 直接使用 Poetry
poetry new myproject
cd myproject
poetry env use python3.11
poetry install策略 3:Conda 主导(不推荐)
仅在必须使用 Conda 特有包时考虑:
conda create -n myproject python=3.11
conda activate myproject
conda install numpy pandas scikit-learn
conda install pytorch torchvision -c pytorch
pip install other-packages # 其他包用 pip缺点:
- 依赖管理混乱
- 难以复现环境
- 缺少锁定文件
最佳实践配置示例
完整的工作流程
# === 初始化项目 ===
# 1. 创建并激活 Conda 环境
conda create -n ml-project python=3.11 -y
conda activate ml-project
# 2. 安装系统级依赖(如果需要)
conda install cudatoolkit=11.8 -c nvidia
# 3. 安装 Poetry
pip install poetry
# 4. 配置 Poetry
poetry config virtualenvs.create false --local
poetry config virtualenvs.in-project false --local
# 5. 初始化项目
poetry init
poetry add numpy pandas scikit-learn
poetry add pytest ruff --group dev
# === 日常开发 ===
# 激活环境
conda activate ml-project
# 添加依赖(只用 Poetry)
poetry add requests
poetry add httpx --group dev
# 运行代码
poetry run python main.py
poetry run pytest
# === 团队协作 ===
# 导出 Conda 环境(仅 Python 版本和系统依赖)
conda env export --from-history > environment.yml
# Poetry 依赖自动锁定在 poetry.lock
git add pyproject.toml poetry.lock environment.yml项目结构
ml-project/
├── pyproject.toml # Poetry 配置
├── poetry.lock # Poetry 锁定文件
├── environment.yml # Conda 环境配置(可选)
├── .python-version # Python 版本声明
├── README.md
├── src/
│ └── ml_project/
│ ├── __init__.py
│ └── main.py
└── tests/
└── test_main.py
团队成员环境复现
# 新团队成员设置环境
# 方法 1:使用 environment.yml(如果存在)
conda env create -f environment.yml
conda activate ml-project
pip install poetry
poetry config virtualenvs.create false --local
poetry install
# 方法 2:手动创建
conda create -n ml-project python=3.11
conda activate ml-project
pip install poetry
poetry config virtualenvs.create false --local
poetry install关键配置说明
Poetry 配置选项
# 不创建虚拟环境(使用当前激活的环境)
poetry config virtualenvs.create false
# 项目级配置(推荐)
poetry config virtualenvs.create false --local
# 查看当前配置
poetry config --list依赖分工原则
| 工具 | 负责内容 | 示例 |
|---|---|---|
| Conda | Python 版本、系统级依赖 | python=3.11, cudatoolkit, mkl |
| Poetry | Python 包依赖、项目管理 | numpy, pandas, fastapi |
常见问题和解决方案
问题 1:Poetry 仍然创建虚拟环境
# 确保配置正确
poetry config virtualenvs.create false --local
# 删除已创建的虚拟环境
poetry env remove python问题 2:包安装冲突
# 只使用 Poetry 安装 Python 包
poetry add package-name
# 不要混用
# ❌ conda install package-name
# ❌ pip install package-name问题 3:CI/CD 配置
# .github/workflows/ci.yml
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Miniconda
uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
python-version: 3.11
activate-environment: test-env
- name: Install Poetry
run: pip install poetry
- name: Configure Poetry
run: poetry config virtualenvs.create false
- name: Install dependencies
run: poetry install
- name: Run tests
run: poetry run pytest新兴替代方案
Pixi
最新信息表明,有一个叫 “Pixi” 的工具被强烈推荐,它以更简单、更集成的形式提供了 Conda 和 Poetry 的功能。如果你在开始新项目,可以考虑:
# 使用 Pixi(新兴工具)
pixi init myproject
pixi add python=3.11
pixi add numpy pandasUV
# 用# 用 UV 创建虚拟环境
uv venv --python 3.12 .venv
# 让 Poetry 使用这个环境
poetry env use .venv/bin/python3
# 或者配置 Poetry 使用项目内的 .venv
poetry config virtualenvs.in-project true
poetry install总结建议
最推荐的方式:
- 机器学习/科学计算项目: Conda 管理环境 + Poetry 管理依赖
- 纯 Python 项目: 完全使用 Poetry
- 新项目(实验性): 考虑 Pixi
核心原则:
- ✅ 使用 Conda 创建环境和安装系统依赖
- ✅ 使用 Poetry 管理所有 Python 包
- ❌ 不要混用
conda install和poetry add - ✅ 配置
virtualenvs.create = false - ✅ 使用
poetry.lock确保依赖可复现