必须指定Python次版本号,因深度学习框架(如PyTorch 2.1+、TensorFlow 2.15)对Python小版本有硬性兼容要求,不指定会导致conda默认安装最新版而引发ImportError或ABI不匹配。

conda 创建隔离环境这件事,不是“能不能”,而是“必须做”——TensorFlow 和 PyTorch 对 Python 版本、CUDA 工具链、numpy 等底层依赖极其敏感,不隔离,ImportError 和 AttributeError 就是家常便饭。
创建环境时为什么必须指定 Python 版本?
深度学习框架对 Python 小版本有硬性要求。比如 PyTorch 2.1+ 要求 python>=3.8,但 python=3.12 可能还没被官方 wheel 支持;TensorFlow 2.15 最高只兼容 python=3.11。不显式指定,conda create -n dl-env 会默认装最新 Python,大概率直接报错。
- 查清目标框架支持的 Python 范围(官网 Release Notes 或
pip install torch报错信息里常带提示) - 用
conda search python --full-name查可用版本,避免拼写错误(如py310是错的,得写3.10) - 命令中写死版本:
conda create -n dl-env python=3.10
激活后 pip 和 conda 安装包行为差异
激活环境后,pip install 和 conda install 都会作用于当前环境,但底层逻辑不同:前者走 PyPI,后者走 conda channel。混用容易出问题。
- 优先用
conda install装核心框架(pytorch、tensorflow、cudatoolkit),它能自动匹配 CUDA 版本 -
pip install适合装 conda 没收录或需要最新版的包(如transformers),但务必在conda activate dl-env后执行 - 禁止在未激活状态下运行
pip install—— 即使提示 “Successfully installed”,也可能装进base环境
删除环境前必须确认当前状态
conda env remove --name dl-env 是不可逆操作,删错环境会导致整个项目无法复现。最常见误操作是:没退出目标环境就删,系统会报错并中止;或者删了 base(千万别删)。
- 删之前先运行
conda deactivate,确保提示符前没有环境名 - 再用
conda env list确认目标环境存在且未激活 - 加
--force参数不会跳过校验,只是省去 y/n 确认,不能绕过“正在使用中”的保护
导出环境配置用于协作或重装
environment.yml 不只是记录包名,它还固化 Python 版本、channel 顺序和构建号(比如 pytorch-2.1.0-py310_cuda11.8_... ),这对 GPU 环境尤其关键。
立即学习“Python免费学习笔记(深入)”;
- 导出命令:
conda env export > environment.yml - 注意过滤掉本地路径信息(如
prefix: /home/user/miniconda3/envs/dl-env),否则别人无法复现 - 导入时用
conda env create -f environment.yml,不要用pip install -r requirements.txt替代——后者无法还原 CUDA 相关依赖
which python 指向错误,以及误把 pip 当成全局工具用。每次打开终端,第一件事不是写代码,而是看提示符有没有括号里的环境名。


















