Miniconda创建环境比系统Python+venv更快、更隔离、更少出错,因其从解释器层实现沙箱隔离,支持Python版本、编译依赖及CUDA Toolkit按需绑定,避免系统污染与冲突。

直接用 Miniconda 创建新环境,比系统 Python + venv 更快、更隔离、更少出错。 它不是“另一个 pip 工具”,而是从解释器层就切开的沙箱——Python 版本、编译依赖(如 _ssl、_ctypes)、甚至 CUDA Toolkit 都能按需绑定,不会污染系统或互相覆盖。
conda create -n 时指定 python= 版本是关键
不指定版本会默认用 Miniconda 自带的 base 环境 Python(通常是最新稳定版),但多数项目需要精确控制。比如跑老项目必须用 python=3.8,AI 实验想试 python=3.11,这些都得显式声明:
-
conda create -n myproj python=3.9—— 创建干净环境,不含任何第三方包 - 避免写成
conda create -n myproj python=3.9.*:conda 不支持通配符,会报错InvalidSpecError - 如果提示
PackageNotFoundError,说明该 Python 版本未预装在当前 Miniconda 渠道中,可加-c conda-forge尝试(conda-forge渠道版本更全) - Windows 用户注意:不要用
py -3.9 -m venv混用,那会绕过 conda 的二进制依赖管理,导致后续pip install torch编译失败
激活环境后 pip 和 conda 的混用有顺序讲究
刚激活环境时,pip 和 conda 都可用,但优先级和行为不同:
- 先用
conda install装核心科学计算包(numpy、pytorch、tensorflow)——它们含预编译二进制和系统级依赖(如 MKL、cuDNN) - 再用
pip install装 conda 渠道没有的包(如某些 GitHub 仓库、私有包),但必须在conda activate myproj后执行,否则装到 base 或系统里 - 绝对不要在激活环境下运行
pip install --upgrade pip:conda 自带的pip是精简版,升级后可能破坏与 conda 的元数据同步,引发CondaEnvironmentError - 验证是否装对了位置:运行
which python(macOS/Linux)或where python(Windows),路径必须含envs/myproj
导出 environment.yml 才算真正“干净可复现”
只靠 conda list 复制粘贴包名是不可靠的——它不记录 Python 版本、渠道来源、构建号(build number),换机器重装大概率出错:
立即学习“Python免费学习笔记(深入)”;
- 正确导出命令:
conda env export -n myproj > environment.yml - 生成的
environment.yml里必须包含prefix:行(删掉,否则别人无法复现)和conda-forge等渠道声明 - 重建命令:
conda env create -f environment.yml,不是pip install -r requirements.txt - 如果项目要发给同事或上 CI,建议删掉
build:字段,改用pip:块管理纯 Python 包,兼顾可读性与稳定性
最常被忽略的一点:环境删除后,envs/ 目录里的残留文件夹不会自动清空,尤其当你用过 --offline 或手动复制过环境。下次 conda env list 看起来正常,但 conda activate xxx 却提示 EnvironmentLocationNotFound——这时得手动检查 miniconda3/envs/ 下有没有空壳文件夹。


















