砍材农夫砍材农夫
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • 微信记账小程序
  • java
  • redis
  • mysql
  • 场景类
  • 框架类
  • vuepress搭建
  • hexo搭建
  • 云图
  • llm wiki

    • 基于karpathy
    • gradle
  • 常用工具

    • git
    • gradle
    • Zadig
    • it-tools
    • 开源推荐
    • curl
  • 大前端

    • 环境配置
    • 微信生态
    • 正则
    • 全栈技能
  • java圈

    • java基础
    • jdk体系
    • jvm
    • spring框架
    • 分库分表
    • zookeeper
  • python技能

    • python编程
    • python数据
  • 算法

    • 算法
  • 网关

    • spring_cloud_gateway
    • openresty
  • 高可用

    • 秒杀
    • 分布式
    • 缓存一致
  • MQ

    • MQ
    • rabbitMQ
    • rocketMQ
    • kafka
  • 其它

    • 设计模式
    • 领域驱动(ddd)
  • 关系型数据库

    • mysql5.0
    • mysql8.0
  • 非关系型数据库

    • redis
    • mongoDB
  • 分布式/其他

    • ShardingSphere
    • 区块链
  • 向量数据库

    • M3E
    • OPEN AI
  • Jmeter
  • fiddler
  • wireshark
  • AI入门
  • AI大模型
  • AI插件
  • AI集成框架
  • 相关算法
  • AI训练师
  • 量化交易
  • AIoT
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 相关运营
  • devops
  • 元宇宙
  • 区块链
  • 物联网
  • webrtc
  • web3.0
  • gitee
  • github
  • infoq
  • osc
  • 砍材工具
  • 关于
  • 中考
  • 投资
  • 保险
  • 思
  • python基础

    • 环境准备
      • pip|uv|venv|Conda区别
      • 默认依赖包安装
      • pip镜像使用
      • venv虚拟环境创建
      • window下面uv安装和使用
      • pip|uv存量项目导入
      • 官方依赖pyproject.toml
      • conda安装和使用(1)
      • conda安装和使用(2)
      • conda项目实战中使用
    • 基础语法和技能
      • Jupyter
      • Jupyter使用
      • notebook
      • 常用工具
  • python高级

    • 主流应用框架
  • python框架

    • 主流应用框架
    • Flask

      • flask demo搭建
      • flask 实现完整接口
      • flask 模板实现
      • flask 会话session实现
      • flask 认证验签
      • flask 全局统一日志追踪
    • FastAPI

      • 依赖包安装
    • Django

      • 依赖包安装
  • python环境|conda项目实战中使用
    • 源码(conda-1目录)
    • 相关步骤流程
      • 创建项目进入目录
      • 为项目创建独立Conda环境
      • 激活环境
      • 安装项目所需的包
      • 导出环境配置
      • environment.yml内容
      • 团队伙伴导入项目
    • environment.yml 和 pyproject.toml比较
      • 两种不同demo对比
      • 如何配合

python环境|conda项目实战中使用

Conda 主要用于 环境隔离 和 依赖管理,确保项目在不同机器上能稳定复现

源码(conda-1目录)

https://gitee.com/kcnf-python/sample

相关步骤流程

创建项目进入目录

mkdir conda-1
cd conda-1

为项目创建独立Conda环境

  • conda create -n conda-1 python=3.11 -y

激活环境

  • conda activate conda-1

安装项目所需的包

# 安装数据科学常用包
conda install numpy pandas matplotlib jupyter -y

# 如果某个包 conda 没有,再用 pip
pip install xxxx

导出环境配置

  • conda env export > environment.yml Image text

  • conda env export --from-history > environment.yml (只导出项目依赖的,而不是整个环境)

environment.yml内容

name: conda-1
channels:
  - conda-forge
dependencies:
  - _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_0
prefix: D:\pro\Python\miniforge3\envs\conda-1  

团队伙伴导入项目

  • conda env create -f environment.yml Image text

environment.yml 和 pyproject.toml比较

维度environment.ymlpyproject.toml
所属工具Conda / Mamba(跨语言环境管理)PEP 621 标准,被 pip、uv、Poetry、PDM、Hatch 等支持
主要用途定义 Conda 环境的完整内容(Python 版本、Conda 包、pip 包、非 Python 依赖)定义 Python 项目的元数据、运行时依赖、构建系统、开发工具配置
是否包含 Python 版本✅ 在 dependencies 中明确列出 python=3.x✅ 在 requires-python 字段指定版本范围(如 >=3.9)
是否包含非 Python 依赖✅ 是(如 CUDA、OpenCV、R、C/C++ 库)❌ 否(仅限 Python 包)
依赖声明方式直接列出包名和版本(可精确或宽松)遵循 PEP 508,可指定版本范围、环境标记等
锁定文件可选:conda env export 可生成精确版本的环境文件外部工具生成锁文件:uv.lock、poetry.lock、requirements.lock
构建系统配置❌ 不涉及✅ 通过 [build-system] 指定构建后端(setuptools, poetry-core 等)
工具配置❌ 不支持✅ 通过 [tool.*] 统一配置 black、ruff、pytest、mypy 等
跨平台可复现性较好(但不同 OS 可能有细微差异)较好(结合锁文件可实现精确复现)
典型文件名environment.ymlpyproject.toml
主要使用场景数据科学、机器学习、需要复杂二进制依赖的项目通用 Python 项目(Web、库、脚本、应用)

两种不同demo对比

  • environment.yml (Conda)
name: ml_project
channels:
  - conda-forge
  - pytorch
dependencies:
  - python=3.10
  - pytorch=2.0
  - cudatoolkit=11.8   # 非 Python 依赖
  - numpy=1.24
  - pandas>=2.0
  - pip
  - pip:
    - transformers
    - datasets
  • pyproject.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 依赖、工具配置
最近更新: 2026/6/14 20:29
Contributors: kcnf
Prev
conda安装和使用(2)