根本解法是修改 conda 的 envs_dirs 配置,执行 conda config --add envs_dirs d:\myenvs 指定新环境默认路径,该设置只影响后续新建环境;已有环境需通过导出 yml、删除 prefix 行、重建方式迁移。

默认情况下,conda 创建的虚拟环境全塞进 C 盘用户目录下的 .conda/envs,一个 PyTorch 环境就能吃掉 4GB+,多个项目一跑,C 盘红得比 Windows 更新还勤。根本解法不是删环境,而是让新环境从一开始就不落地 C 盘。
修改 conda 的 envs_dirs 配置
这是最干净、一劳永逸的方式:告诉 conda「以后所有新环境,都给我建在 D 盘」。
- 执行
conda config --add envs_dirs D:\myenvs(路径可自定义,但必须是**已存在**的空文件夹) - 确认生效:
conda config --show envs_dirs,输出里应包含你刚加的路径 - 注意:该配置只影响后续新建的环境;已有环境不会自动迁移,也不会被删除
- 如果想让多个路径共存(比如保留 C 盘做临时测试),可用
conda config --add envs_dirs E:\envs多加几次
创建环境时手动指定路径
不改全局配置,也能临时绕过 C 盘——用 -p 参数直接写死路径。
- 命令示例:
conda create -p D:\projects\ml-env python=3.9 numpy pandas pytorch - 好处是路径完全可控,适合项目级隔离(比如每个项目配一个独立环境目录)
- 缺点是每次都要输完整路径,且激活方式变成
conda activate D:\projects\ml-env,不能用简短的环境名 - 这种路径型环境不会出现在
conda env list的“名称”列里,只显示绝对路径
迁移已有环境到非系统盘
别删重装,用 conda 自带的导出/重建机制,比复制文件夹靠谱得多。
- 先导出环境配置:
conda env export -n old-env > D:\backup\old-env.yml - 编辑生成的
old-env.yml,把顶部的prefix:行删掉(否则重建时会强制回原路径) - 在目标盘创建新环境:
conda env create -f D:\backup\old-env.yml -n old-env(此时它会落在你刚设的envs_dirs路径下) - 验证后,再删掉旧环境:
conda env remove -n old-env - ⚠️ 注意:yml 导出不包含二进制缓存,重建时仍需联网下载包;若需离线迁移,得用
conda-pack工具
真正容易被忽略的点是权限和路径合法性:D 盘根目录下新建文件夹时,别用中文名或空格;如果目标路径在 NTFS 分区但提示“Permission denied”,大概率是杀毒软件或 Windows Defender 拦了 conda 的 symlink 创建——关掉实时防护再试一次就行。











