Conda 主要用于 环境隔离 和 依赖管理,确保项目在不同机器上能稳定复现
https://gitee.com/kcnf-python/sample
mkdir conda-1cd conda-1conda create -n conda-1 python=3.11 -y
conda activate conda-1
# 安装数据科学常用包conda install numpy pandas matplotlib jupyter -y# 如果某个包 conda 没有,再用 pippip install xxxxconda env export > environment.yml
conda env export --from-history > environment.yml (只导出项目依赖的,而不是整个环境)
name: conda-1channels: - conda-forgedependencies: -_openmp_mutex=4.5=20_gnu - anyio=4.13.0=pyhcf101f3_0 - argon2-cffi=25.1.0=pyhd8ed1ab_0 - argon2-cffi-bindings=25.1.0=py311h3485c13_2 - arrow=1.4.0=pyhcf101f3_0 - asttokens=3.0.1=pyhd8ed1ab_0 - async-lru=2.3.0=pyhcf101f3_0 - attrs=26.1.0=pyhcf101f3_0 - babel=2.18.0=pyhcf101f3_1 - backports.zstd=1.5.0=py311h71c1bcc_0prefix: D:\pro\Python\miniforge3\envs\conda-1 conda env create -f environment.yml
dependencies 中明确列出 python=3.x | requires-python 字段指定版本范围(如 >=3.9) | |
conda env export 可生成精确版本的环境文件 | uv.lock、poetry.lock、requirements.lock | |
[build-system] 指定构建后端(setuptools, poetry-core 等) | ||
[tool.*] 统一配置 black、ruff、pytest、mypy 等 | ||
environment.yml | pyproject.toml | |
environment.yml (Conda)
name:ml_projectchannels:-conda-forge-pytorchdependencies:-python=3.10-pytorch=2.0-cudatoolkit=11.8# 非 Python 依赖-numpy=1.24-pandas>=2.0-pip-pip:-transformers-datasetspyproject.toml (Python 标准)
[project]name = "ml_project"version = "0.1.0"description = "An ML project"requires-python = ">=3.10"dependencies = ["numpy>=1.24","pandas>=2.0","transformers","datasets",][build-system]requires = ["setuptools>=61.0"]build-backend = "setuptools.build_meta"[tool.black]line-length = 88[tool.pytest.ini_options]testpaths = ["tests"]只用environment.yml(传统 Conda 工作流)
适合:项目依赖复杂二进制库(CUDA、OpenCV、GDAL 等)
缺点:不提供标准的 Python 项目元数据,打包发布困难
pyproject.toml + uv/poetry(现代纯 Python 工作流)
适合:纯 Python 项目,无非 Python 依赖
操作:uv venv → uv pip install -e . 或 poetry install
优点:标准化、工具链统一、快速
两者结合使用(推荐用于复杂项目)
environment.yml 负责:定义 Conda 环境(Python 版本 + 非 Python 依赖 + pip + 项目本身的可编辑安装)
pyproject.toml 负责:定义项目的元数据、纯 Python 依赖、工具配置
点下方的“❤”支持下,非常感谢!
