☰
Anaconda 安装在 D 盘但虚拟环境跑到 C 盘,以及 Conda PermissionError: WinError 5 的解决方法
2026/9/28 19:39:37 网站建设 项目流程

1. 问题背景

Windows 下安装 Anaconda 时,我将 Anaconda 安装到了:

D:\software\Anaconda3

但是执行:

conda env list

发现虚拟环境却被创建到了 C 盘:

# conda environments: # py312 C:\Users\Lenovo\.conda\envs\py312 py313 C:\Users\Lenovo\.conda\envs\py313 base * D:\software\Anaconda3

也就是说:

  • Anaconda 主程序在 D 盘;

  • base环境在 D 盘;

  • 新创建的py312、py313环境却在 C 盘。

我的目标是以后所有 Conda 虚拟环境统一放到:

D:\software\Anaconda3\envs

同时将已经创建在 C 盘的环境迁移到 D 盘。


2. 为什么 Anaconda 在 D 盘,虚拟环境却在 C 盘?

Conda 的安装目录和虚拟环境目录并不是必须相同的。

例如:

Anaconda: D:\software\Anaconda3 虚拟环境: C:\Users\Lenovo\.conda\envs

这是完全允许的。

Conda 会维护多个虚拟环境搜索路径,可以通过:

conda info

查看。

例如:

envs directories : D:\software\Anaconda3\envs C:\Users\Lenovo\.conda\envs C:\Users\Lenovo\AppData\Local\conda\conda\envs

Conda 创建环境时,会选择优先级较高并且当前用户具有写权限的目录。

因此,即使 Anaconda 安装在:

D:\software\Anaconda3

如果普通 Windows 用户无法写入:

D:\software\Anaconda3\envs

Conda 就可能自动退回到:

C:\Users\用户名\.conda\envs

这也是为什么虚拟环境最终出现在 C 盘。


3. 设置以后所有虚拟环境默认保存到 D 盘

希望以后执行:

conda create -n test python=3.12

时,环境自动创建到:

D:\software\Anaconda3\envs\test

可以执行:

conda config --prepend envs_dirs D:\software\Anaconda3\envs

然后检查:

conda config --show envs_dirs

如果看到:

envs_dirs: - D:\software\Anaconda3\envs - C:\Users\Lenovo\.conda\envs

说明配置已经生效。

关键是:

D:\software\Anaconda3\envs

必须排在第一位。

此时再创建环境:

conda create -n test python=3.12

理论上应该生成:

D:\software\Anaconda3\envs\test

4. 迁移已有 Conda 环境时遇到 WinError 5

已有环境:

C:\Users\Lenovo\.conda\envs\py312

准备迁移到:

D:\software\Anaconda3\envs\py312

使用:

conda create --prefix D:\software\Anaconda3\envs\py312 --clone C:\Users\Lenovo\.conda\envs\py312

但出现错误:

PermissionError: [WinError 5] 拒绝访问。 'D:\software\Anaconda3\envs\py312'

在conda info中还可以看到:

base environment : D:\software\Anaconda3 (read only) administrator : False

这说明问题不是 Conda 环境本身损坏,而是:

当前 Windows 用户没有权限向D:\software\Anaconda3\envs写入文件。


5. 正确解决 WinError 5

不建议以后每次都使用“管理员身份运行 Anaconda Prompt”。

更合理的方法是:

给当前 Windows 用户授予envs目录的修改权限。

假设 Windows 用户名为:

Lenovo

首先以管理员身份打开 CMD:

Windows 搜索 → cmd → 右键 → 以管理员身份运行

然后执行:

icacls "D:\software\Anaconda3\envs" /grant Lenovo:(OI)(CI)M /T

其中:

Lenovo

是 Windows 用户名。

参数含义:

M

表示 Modify,即修改权限。

(OI)

表示文件继承权限。

(CI)

表示子目录继承权限。

/T

表示递归应用到所有子目录。


6. 建议同时给 pkgs 目录权限

Conda 下载的软件包缓存通常位于:

D:\software\Anaconda3\pkgs

如果这个目录也没有写权限,将来安装包时仍可能报类似权限错误。

因此建议同时执行:

icacls "D:\software\Anaconda3\pkgs" /grant Lenovo:(OI)(CI)M /T

最终执行的两个命令为:

icacls "D:\software\Anaconda3\envs" /grant Lenovo:(OI)(CI)M /T icacls "D:\software\Anaconda3\pkgs" /grant Lenovo:(OI)(CI)M /T

完成后关闭管理员 CMD。

以后正常打开 Anaconda Prompt 即可,不需要一直使用管理员权限。


7. 测试 D 盘目录是否已经可写

正常打开 Anaconda Prompt。

执行:

mkdir D:\software\Anaconda3\envs\test_write

如果没有报错,说明已经有写权限。

然后删除测试目录:

rmdir D:\software\Anaconda3\envs\test_write

8. 重新迁移 py312 环境

不要直接在资源管理器中剪切:

C:\Users\Lenovo\.conda\envs\py312

然后粘贴到 D 盘。

因为 Conda 环境中的某些脚本和配置可能包含绝对路径,直接移动可能导致环境异常。

推荐使用 Conda 自带的 clone。

首先:

conda activate base

然后:

conda create --prefix D:\software\Anaconda3\envs\py312 --clone C:\Users\Lenovo\.conda\envs\py312

如果之前失败的 clone 已经留下:

D:\software\Anaconda3\envs\py312

这样的残缺目录,可以先删除:

rmdir /s /q D:\software\Anaconda3\envs\py312

然后重新执行 clone。


9. 迁移 py313

同理:

conda activate base

执行:

conda create --prefix D:\software\Anaconda3\envs\py313 --clone C:\Users\Lenovo\.conda\envs\py313

10. 检查环境是否迁移成功

执行:

conda env list

迁移过程中可能暂时看到:

py312 C:\Users\Lenovo\.conda\envs\py312 py313 C:\Users\Lenovo\.conda\envs\py313 D:\software\Anaconda3\envs\py312 D:\software\Anaconda3\envs\py313 base D:\software\Anaconda3

出现两份环境是正常的。因为此时旧环境还没有删除。


11. 测试迁移后的环境

测试py312:

conda activate D:\software\Anaconda3\envs\py312

然后:

where python

正常情况下应该优先看到:

D:\software\Anaconda3\envs\py312\python.exe

检查 Python 版本:

python --version

例如:

Python 3.12.x

还可以查看包:

conda list

如果原环境安装了 NumPy,可以进一步测试:

python -c "import numpy; print(numpy.__version__)"

如果都正常,说明迁移成功。

py313也可以采用同样方式测试:

conda activate D:\software\Anaconda3\envs\py313 where python python --version

12. 确认正常后删除 C 盘旧环境

注意:

一定要确认 D 盘新环境可以正常使用后,再删除 C 盘环境。

首先退出当前环境:

conda activate base

删除旧的 py312:

conda remove --prefix C:\Users\Lenovo\.conda\envs\py312 --all

删除旧的 py313:

conda remove --prefix C:\Users\Lenovo\.conda\envs\py313 --all

然后再次:

conda env list

最终理想状态为:

# conda environments: # base * D:\software\Anaconda3 py312 D:\software\Anaconda3\envs\py312 py313 D:\software\Anaconda3\envs\py313

13. PyCharm 中找不到 Conda 环境怎么办?

即使 Conda 环境已经创建成功,PyCharm 也不一定能够自动搜索出来。

这种情况下,不需要纠结 PyCharm 为什么没有自动识别,直接手动指定 Python 解释器即可。

进入:

File → Settings → Project → Python Interpreter → Add Interpreter → Add Local Interpreter

选择已有环境,然后找到:

D:\software\Anaconda3\envs\py312\python.exe

或者:

D:\software\Anaconda3\envs\py313\python.exe

选择即可。

如果 PyCharm 还要求指定 Conda executable,可以使用:

D:\software\Anaconda3\Scripts\conda.exe

可以通过下面命令确认:

where conda

14. 常用排查命令汇总

查看所有 Conda 环境

conda env list

查看 Conda 详细信息

conda info

重点关注:

base environment package cache envs directories administrator

查看虚拟环境默认目录

conda config --show envs_dirs

查看 Conda 配置文件来源

conda config --show-sources

查看当前调用的是哪个 Conda

where conda

查看当前 Python

where python

查看 Python 版本

python --version

15. 本次问题的核心原因

整个问题实际上包含两个不同层面。

问题一:为什么环境创建到了 C 盘?

因为 Conda 可以配置多个环境目录:

D:\software\Anaconda3\envs C:\Users\Lenovo\.conda\envs C:\Users\Lenovo\AppData\Local\conda\conda\envs

虽然希望优先使用 D 盘,但当前 Windows 用户对:

D:\software\Anaconda3\envs

没有写权限,因此 Conda 使用了用户目录中的:

C:\Users\Lenovo\.conda\envs

问题二:为什么 clone 时出现 WinError 5?

错误:

PermissionError: [WinError 5] 拒绝访问

本质是 Windows 文件权限问题。

特别是:

base environment : D:\software\Anaconda3 (read only) administrator : False

说明当前普通用户不能修改 Anaconda 安装目录下的部分文件夹。

解决方法不是重装 Conda,而是给:

D:\software\Anaconda3\envs

和:

D:\software\Anaconda3\pkgs

适当的修改权限。


16. 最终推荐的 Conda 目录结构

最终建议保持:

D:\software\Anaconda3 │ ├─ python.exe │ ├─ Scripts │ ├─ Library │ ├─ pkgs │ └─ envs │ ├─ py312 │ ├─ py313 │ ├─ pytorch │ └─ 其他环境

即:

base: D:\software\Anaconda3 虚拟环境: D:\software\Anaconda3\envs\环境名 包缓存: D:\software\Anaconda3\pkgs

这样 Anaconda 主程序、包缓存、虚拟环境全部集中在 D 盘,不会不断占用系统盘 C 盘。


17. 最简解决流程

如果以后再次遇到类似问题,可以直接按下面顺序排查。

首先:

conda info

检查:

envs directories base environment administrator

然后设置:

conda config --prepend envs_dirs D:\software\Anaconda3\envs

管理员 CMD 中授权:

icacls "D:\software\Anaconda3\envs" /grant Lenovo:(OI)(CI)M /T icacls "D:\software\Anaconda3\pkgs" /grant Lenovo:(OI)(CI)M /T

迁移旧环境:

conda create --prefix D:\software\Anaconda3\envs\py312 --clone C:\Users\Lenovo\.conda\envs\py312

测试:

conda activate D:\software\Anaconda3\envs\py312 where python python --version

确认正常后删除旧环境:

conda activate base conda remove --prefix C:\Users\Lenovo\.conda\envs\py312 --all

最后:

conda env list

确认所有环境均位于:

D:\software\Anaconda3\envs

即可。


总结

如果 Anaconda 明明安装在 D 盘,而 Conda 虚拟环境却不断出现在:

C:\Users\用户名\.conda\envs

不要第一时间认为 Anaconda 安装错误。

重点检查:

conda info

尤其是:

envs directories

以及 D 盘目标目录是否具有写权限。

如果出现:

PermissionError: [WinError 5] 拒绝访问

首先考虑 Windows 权限,而不是重新安装 Anaconda。

对于已有环境,也不要直接剪切整个环境目录,优先使用:

conda create --prefix 新路径 --clone 旧路径

完成迁移后,再在 PyCharm 中手动指定:

新环境目录\python.exe

即可。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询