必须用 conda create 创建隔离环境,因其能从解释器层彻底隔离依赖;创建时须指定精确 python 版本(如 python=3.9.15),禁用混用 pip,优先配置清华镜像源并关闭 defaults 通道,导出环境仅用 --from-history 确保可复现。

用 conda create 创建隔离环境,别碰全局 Python
直接在系统 Python 或用户级 pip 环境里装包,等于把所有项目塞进同一个抽屉——TensorFlow 2.4 和 2.8、PyTorch 1.x 和 2.x 会当场打架。conda create 是唯一能从解释器层就切开冲突的手段。它不依赖系统 Python,而是为每个项目生成独立的 python=3.9 副本 + 完整包树。
实操要点:
- 创建时必须显式指定 Python 版本:
conda create -n myproject python=3.9.7(别省略补丁号,3.9.0 和 3.9.18 的 C API 兼容性可能有细微差异) - 激活后立刻验证:
conda activate myproject→which python应返回~/miniconda3/envs/myproject/bin/python(Linux/macOS)或类似路径,绝不能是/usr/bin/python3 - 禁用 pip install:除非明确知道某个包只提供 wheel 且无二进制依赖,否则一律用
conda install。混用会破坏 conda 的依赖图谱
镜像源必须换,否则 conda install 会卡死或装错版本
默认 conda 源(defaults)对 Python 3.9 支持滞后,尤其国内用户常遇到 Solving environment: failed 或装出非官方编译的 PyTorch(比如没 CUDA 支持的 CPU-only 版本)。
正确做法:
- 优先用清华源:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ - 关闭 defaults 通道:
conda config --set channel_priority strict(避免 conda 在多个源间反复试探) - 验证配置:
conda config --show channels输出应只含你添加的镜像地址,不含defaults
遇到 “UnsatisfiableError” 别硬试,先看冲突根源
conda install pytorch=2.0 torchvision=0.15 -c pytorch 报这个错,不是命令写错了,而是 conda 在当前环境中找不到满足所有约束的组合——比如你已装了 numpy=1.26,但 PyTorch 2.0 要求 numpy。
快速定位方法:
- 运行
conda list,重点看报错涉及的包及其版本(如numpy、python、openssl) - 用
conda search --info pytorch=2.0查该版本实际依赖哪些包及版本范围 - 最稳妥解法:删掉当前环境重来:
conda env remove -n myproject,然后按依赖顺序重装(先python和numpy,再pytorch)
环境导出要带 --from-history,否则复现必翻车
conda env export > environment.yml 导出的是当前环境所有包(含 conda 自动装的底层依赖,如 libgcc-ng),别人用它重建环境时极可能失败——因为那些底层包版本和你的机器强绑定。
真正可复现的导出方式:
-
conda env export --from-history > environment.yml(只导出你手动执行conda install的那几行命令) - 检查生成的
environment.yml,确认只有dependencies下列了你明确需要的包,没有一堆libstdcxx-ng=12.2.0这类细节 - 部署时用
conda env create -f environment.yml,conda 会根据当前平台自动选最适配的二进制版本
复杂点在于:Python 3.9 本身不是“一个版本”,而是从 3.9.0 到 3.9.18 的连续体;不同小版本对应的 ABI 兼容性、SSL 库行为、甚至 datetime 解析逻辑都可能有差异。所以环境定义里必须锁定 python=3.9.15 这样的精确版本,而不是模糊写 python=3.9。
Python免费学习笔记(深入):立即使用
在学习笔记中,你将探索 Python 的核心概念和高级技巧!











