技术文档 · 永久存档
Conda + CUDA 环境安装与使用完全指南
基于 Windows 系统,从 Miniconda 安装到 CUDA Toolkit 部署,涵盖本次踩过的全部坑、根因分析、故障速查表与后续日常使用规范。
conda 26.5.3CUDA 13.0.2 (nvcc V13.0.88)RTX 5060 Ti 16GBWindows 10/11 x64
目 录
- 一、已安装环境速览
- [二、3 步快速上手(日常使用)](#二、3 步快速上手(日常使用))
- 三、标准安装流程(避免重踩坑)
- [四、6 大问题根因与永久解决方案](#四、6 大问题根因与永久解决方案)
- 五、故障排查速查表
- [六、PowerShell Profile 永久配置](#六、PowerShell Profile 永久配置)
- 七、后续使用指南
- 八、关键路径与文件速查
一、已安装环境速览
本次安装的全部组件如下,均已验证可用。
硬件与驱动
| 项目 | 值 | 说明 |
|---|---|---|
| GPU | NVIDIA GeForce RTX 5060 Ti | 16311 MiB 显存 |
| 驱动版本 | 591.55 | 支持 CUDA ≤ 13.1 |
| 操作系统 | Windows x64 | win-64 平台 |
软件组件
| 组件 | 版本 | 安装路径 |
|---|---|---|
| Miniconda(conda) | 26.5.3 | C:\ProgramData\miniconda3 |
| Python(base 环境) | 3.14.6 | C:\ProgramData\miniconda3\python.exe |
| CUDA Toolkit(cuda130 环境)在用 | 13.0.2(nvcc V13.0.88) | C:\ProgramData\miniconda3\envs\cuda130 |
| CUDA Toolkit(旧环境,已废弃)勿用 | 13.0.2 | C:\Users\lizhi\.conda\envs\cuda130 |
⚠️ 重要提示C:\Users\lizhi\.conda\envs\cuda130 是第一次创建时写入用户目录 的旧环境。管理员终端无法访问该路径(会报"系统找不到指定的路径"),请始终使用 C:\ProgramData\miniconda3\envs\cuda130。
二、3 步快速上手(日常使用)
如果你只是想立刻开始使用 CUDA,按下面顺序操作即可。

标准使用流程(终端输出示例)
bash
conda activate cuda130
(cuda130) PS C:\Users\lizhi> nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Cuda compilation tools, release 13.0, V13.0.88
(cuda130) PS C:\Users\lizhi> nvcc my_program.cu -o my_program.exe
(cuda130) PS C:\Users\lizhi> .\my_program.exe
激活 cuda130 后终端输出大量 VS 调试信息怎么办?
这是 cuda-nvcc 自带的 ~cuda-nvcc_activate.bat 在尝试检测 Visual Studio 工具链(编译 .cu 时需要 C++ 编译器)。不影响使用。如果你已经安装了 Visual Studio 2017/2019/2022 的 C++ 桌面开发组件,这些输出会自动收敛为几行。
想彻底屏蔽输出?激活时改用:conda activate cuda130 2>$null | Out-Null。或者安装 Visual Studio Build Tools 的"C++ 桌面开发"工作负载。
三、标准安装流程(避免重踩坑)
如果你要在另一台电脑 或重装系统后重新部署,严格按以下步骤操作。这是去除了全部弯路的最小正确流程。
bash
flowchart TD
A[开始] --> B[检查 GPU 驱动 nvidia-smi]
B --> C[下载 Miniconda 官方安装包]
C --> D[管理员身份运行安装包]
D --> E[安装到 C:\\ProgramData\\miniconda3]
E --> F[设置执行策略 RemoteSigned / Bypass]
F --> G[conda init powershell]
G --> H[重启 PowerShell]
H --> I[配置清华镜像源]
I --> J[接受 Anaconda TOS 3 条命令]
J --> K[创建 CUDA 环境到系统目录 envs_dirs]
K --> L[conda activate + nvcc 验证]
L --> M[完成 ✓]
图 1 · 标准安装流程
-
检查 GPU 驱动 终端运行
nvidia-smi,确认驱动版本和 CUDA 上限。你的驱动 591.55 支持 CUDA ≤ 13.1。没有驱动请先到 NVIDIA 官网下载安装。 -
下载 Miniconda 推荐从清华镜像下载:
https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Windows-x86_64.exe -
运行安装程序(关键:管理员身份 + AllUsers 模式) 右键安装程序 → 以管理员身份运行 。安装模式选
AllUsers,安装路径务必选C:\ProgramData\miniconda3(不要安装到用户目录)。勾选"Add to PATH"和"Register Python"。bash# 命令行静默安装的正确参数 Start-Process Miniconda.exe -ArgumentList @( '/S', '/InstallationType=AllUsers', '/InstallDir=C:\ProgramData\miniconda3', '/AddToPath=1', '/RegisterPython=1' ) -Wait -Verb RunAs -
设置 PowerShell 执行策略
bashSet-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -ForceBypass 是最省心的选择。RemoteSigned 也可以,但要对每个 profile 文件执行
Unblock-File。 -
初始化 conda
bash& 'C:\ProgramData\miniconda3\Scripts\conda.exe' init powershell -
重启 PowerShell,配置清华镜像源
bashconda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ conda config --set show_channel_urls yes -
接受 Anaconda Terms of Service(必须,否则 create/clone 会失败)
bashconda tos accept --override-channels --channel 'https://repo.anaconda.com/pkgs/main' conda tos accept --override-channels --channel 'https://repo.anaconda.com/pkgs/r' conda tos accept --override-channels --channel 'https://repo.anaconda.com/pkgs/msys2' -
创建 CUDA 环境(关键:指定到系统目录 envs) 不要让 conda 写入用户目录 (
~\.conda\envs)。务必把环境创建到系统安装目录下的envs,这样普通终端和管理员终端都能访问。bashconda create -p 'C:\ProgramData\miniconda3\envs\cuda130' ` -c nvidia -c conda-forge cuda=13.0.2 -y -
重启 PowerShell,验证
bashconda activate cuda130 nvcc --version显示
release 13.0, V13.0.88即为成功。
四、6 大问题根因与永久解决方案
本次安装过程中遇到的全部问题。每一条都附带根因分析,避免以后在相同问题上反复消耗时间。
| # | 错误现象 | 根因分析 | 永久解决方案 |
|---|---|---|---|
| 1 | 安装失败 Failed to extract packages(NSIS 安装日志) |
下载的安装包不完整。由于网络不稳定,下载到 122MB 时中断但被缓存。NSIS 安装器解压时发现包损坏。 | 1. 使用 curl.exe -L -C - 断点续传 2. 安装前校验文件大小(Miniconda latest ≈ 124.7MB) 3. 优先使用清华镜像,比官方源稳定 |
| 2 | 命令不存在 无法将"conda"项识别为 cmdlet... |
两种可能: a) PATH 中没有 conda 路径 (JustMe 安装模式没有写入系统 PATH) b) PowerShell 执行策略禁止加载 profile(conda hook 没被 dot-source) | 1. 安装时必须选 AllUsers 到 C:\ProgramData 2. 手动追加 4 条路径到用户 PATH:miniconda3、Scripts、condabin、Library\bin 3. Set-ExecutionPolicy Bypass -Scope CurrentUser |
| 3 | 脚本被阻止 因为在此系统上禁止运行脚本... |
PowerShell 默认执行策略 Undefined/Restricted,.ps1 文件包括 profile 都会被拒绝加载。RemoteSigned 仍可能阻止本地创建的未签名脚本(取决于 Zone.Identifier)。 |
1. 执行 Set-ExecutionPolicy -Scope CurrentUser Bypass -Force 2. 对两个 profile 文件执行 Unblock-File(RemoteSigned 场景下) 3. 同时写入 profile.ps1 和 Microsoft.PowerShell_profile.ps1(不同宿主加载不同文件) |
| 4 | 环境找不到 EnvironmentNameNotFound: cuda130 或 conda env list 只显示 base |
管理员终端的 PATH 被重置 + conda PowerShell 函数未加载 。 当 Get-Command conda 显示的是 conda.bat(Application 类型)而非 Conda.psm1 导出的 Function,说明 hook 未加载。此时 activate 走的是 cmd 子进程,PATH 修改无法回传到 PowerShell 父进程。 |
永久方案:在 profile 顶部先手动加载模块再注入基础 PATH: . 'C:\ProgramData\miniconda3\shell\condabin\Conda.psm1' . 'C:\ProgramData\miniconda3\shell\condabin\conda-hook.ps1' # 手动注入基础 conda PATH 防止管理员终端丢失 foreach ($p in @('C:\ProgramData\miniconda3', 'C:\ProgramData\miniconda3\Scripts', 'C:\ProgramData\miniconda3\condabin', 'C:\ProgramData\miniconda3\Library\bin')) { if ($env:PATH -notlike "*$p*") { $env:PATH = "$p;$env:PATH" } } |
| 5 | 路径不存在 EnvironmentLocationNotFound: Not a conda environment 或 robocopy 报 0x00000003 系统找不到指定的路径 |
以管理员身份运行 PowerShell 时,无法访问普通用户目录下的 .conda 文件夹 。 NTFS 的用户目录对管理员也是部分受限的(特别是带 . 前缀的隐藏目录),不同完整性级别的令牌可能看不到部分内容。conda 进入目录失败就会判定"Not a conda environment"。 |
核心原则:conda 环境永远创建到 C:\ProgramData\miniconda3\envs\,不要放到 ~\.conda\envs。 用 -p 参数显式指定路径创建: conda create -p 'C:\ProgramData\miniconda3\envs\cuda130' ... |
| 6 | TOS 未接受 CondaToSNonInteractiveError: Terms of Service have not been accepted |
Anaconda 自 2025 年起要求在使用 defaults / pkgs/main / pkgs/r / pkgs/msys2 前显式接受服务条款。即使你不用这些频道,conda 的元数据解析也可能触发。 |
创建任何环境之前,先跑 3 条 TOS 接受命令(见第三节第 7 步)。如果你的镜像源完全移除了 defaults 频道,可以用 conda config --remove channels defaults 规避。 |
五、故障排查速查表
遇到报错直接查表,按"优先级"顺序执行对应命令。大多数情况下第 1 条或第 2 条即可解决。
| 报错信息(匹配关键词) | 优先级 | 执行命令 / 操作 |
|---|---|---|
无法将"conda"项识别为 cmdlet |
P0 | 先手动加载 hook: . 'C:\ProgramData\miniconda3\shell\condabin\Conda.psm1'; . 'C:\ProgramData\miniconda3\shell\condabin\conda-hook.ps1' 再验证 conda --version。如果生效,说明 profile 未加载 → 按第六节修复。 |
EnvironmentNameNotFound: cuda130 |
P0 | 先确认 conda env list 能否看到 cuda130。看不到 → 先加载 hook(同上一条)。仍看不到 → 用绝对路径激活:conda activate C:\ProgramData\miniconda3\envs\cuda130。 |
Not a conda environment: C:\Users\lizhi\.conda\envs\cuda130 |
P0 | 不要使用用户目录下的旧环境。 改用系统目录路径: conda activate C:\ProgramData\miniconda3\envs\cuda130 然后用 conda env list 确认名字解析正常。 |
禁止运行脚本 / UnauthorizedAccess |
P1 | Set-ExecutionPolicy -Scope CurrentUser Bypass -Force 重启 PowerShell。 |
nvcc : 无法将"nvcc"项识别为... |
P1 | 先用绝对路径确认文件存在: & 'C:\ProgramData\miniconda3\envs\cuda130\Library\bin\nvcc.exe' --version 若能显示版本 → 说明当前 shell 的 PATH 丢了。重新 conda activate cuda130,或手动追加: $env:PATH = 'C:\ProgramData\miniconda3\envs\cuda130\Library\bin;' + $env:PATH |
Terms of Service have not been accepted |
P1 | 执行第三节第 7 步的 3 条 conda tos accept 命令。 |
激活时大量 VSINSTALLDIR / vcvars64.bat / 系统找不到指定的路径 输出 |
P2 | 可忽略,不影响使用。 若想彻底消除:安装 Visual Studio Installer → 勾选"使用 C++ 的桌面开发"工作负载。 |
conda 下载大包时 Connection broken: IncompleteRead |
P1 | 增大超时与重试次数: conda config --set remote_connect_timeout_secs 60 conda config --set remote_read_timeout_secs 300 conda config --set remote_max_retries 10 conda config --set remote_backoff_factor 2 |
管理员终端 robocopy 访问用户目录报 0x00000003 |
P0 | 不要在管理员终端里操作 C:\Users\lizhi\.conda\... 目录。切换到普通 PowerShell 再访问用户目录。 |
六、PowerShell Profile 永久配置
以下是当前应该写入的最终版本。如果你重新装系统或换电脑,直接复制这段即可。
写入的两个文件
| 文件路径 | 作用 | 加载时机 |
|---|---|---|
C:\Users\lizhi\Documents\WindowsPowerShell\profile.ps1 |
"所有宿主通用"profile,PowerShell ISE、VSCode 终端等部分宿主会加载此文件 | 先于 CurrentUserCurrentHost 加载 |
C:\Users\lizhi\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 |
Console 宿主专用 profile,Windows 自带的 powershell.exe 加载 | profile.ps1 之后加载 |
💡 为什么写两个文件?不同的 PowerShell 宿主(ConsoleHost、ISE、Visual Studio Code、PowerShell 7)加载的 profile 文件路径和顺序都不同。两个都写保证任何终端打开都能生效。这是本次调试中反复出现"我的终端能用,你那边不能用"的根因之一。
最终版 Profile 内容(两个文件内容完全相同)
bash
# ===== conda initialize(永久固定版本)=====
$Env:CONDA_EXE = "C:/ProgramData/miniconda3/Library/bin/conda.exe"
$Env:_CE_M = ""
$Env:_CE_CONDA = ""
$Env:CONDA_SHLVL = 0
. "C:/ProgramData/miniconda3/shell/condabin/Conda.psm1"
. "C:/ProgramData/miniconda3/shell/condabin/conda-hook.ps1"
# 确保管理员终端也能找到 conda(PATH 注入)
$basePaths = @(
'C:\ProgramData\miniconda3',
'C:\ProgramData\miniconda3\Scripts',
'C:\ProgramData\miniconda3\condabin',
'C:\ProgramData\miniconda3\Library\bin'
)
foreach ($p in $basePaths) {
if ($env:PATH -notlike "*$p*") { $env:PATH = "$p;$env:PATH" }
}
# ===== conda initialize end =====
需要配合的执行策略
bash
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force
(确认时输入 Y 或全选 A)
Unblock-File 'C:\Users\lizhi\Documents\WindowsPowerShell\profile.ps1'
Unblock-File 'C:\Users\lizhi\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1'
完成以上操作后,关闭所有 PowerShell 窗口,重新打开一个新窗口 ,此时直接输入 conda activate cuda130 应该立刻能用,不需要额外步骤。
七、后续使用指南
7.1 conda 常用命令
| 操作 | 命令 | 说明 |
|---|---|---|
| 查看所有环境 | conda env list |
列出全部 conda 环境和路径 |
| 激活环境 | conda activate <名字或路径> |
如 conda activate cuda130 |
| 退出环境 | conda deactivate |
退出当前环境回到 base |
| 创建新环境(推荐写入系统 envs 目录) | conda create -p 'C:\ProgramData\miniconda3\envs\<name>' python=3.12 -y |
始终用 -p 指定到系统目录 |
| 查看已装包 | conda list -n cuda130 |
或激活后直接 conda list |
| 安装包 | conda install -n cuda130 numpy -y |
优先用 conda-forge 频道,加 -c conda-forge |
| 删除环境 | conda env remove -n cuda130 -y |
或 conda env remove -p 'C:\...\cuda130' |
| 克隆环境 | conda create -p <目标路径> --clone <源路径> -y |
先接受 3 条 TOS,否则会报错 |
| 搜索包 | conda search -c conda-forge cudnn |
支持 glob,如 cuda=13.0.* |
7.2 编译 CUDA 程序(Hello, GPU)
创建文件 hello.cu:
cpp
#include <stdio.h>
__global__ void hello() {
printf("Hello from GPU block %d, thread %d\n", blockIdx.x, threadIdx.x);
}
int main() {
hello<<<2, 4>>();
cudaDeviceSynchronize();
printf("Hello from CPU\n");
return 0;
}
编译并运行:
(cuda130) PS> nvcc hello.cu -o hello.exe
(cuda130) PS> .\hello.exe
Hello from GPU block 0, thread 0
Hello from GPU block 0, thread 1
...
Hello from CPU
7.3 安装 PyTorch(GPU 版)
建议单独建一个环境,不要和 CUDA Toolkit 的纯编译环境混在一起。
bash
conda create -p 'C:\ProgramData\miniconda3\envs\torch' `
python=3.12 pytorch torchvision torchaudio pytorch-cuda=13.0 `
-c pytorch -c nvidia -c conda-forge -y
conda activate torch
(torch) PS> python -c "import torch; print(torch.cuda.is_available()); print(torch.cuda.get_device_name(0))"
True
NVIDIA GeForce RTX 5060 Ti
7.4 安装 TensorFlow(GPU 版)
bash
conda create -p 'C:\ProgramData\miniconda3\envs\tf' `
python=3.12 tensorflow-gpu cudnn -c conda-forge -y
conda activate tf
(tf) PS> python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
7.5 频道优先级说明
📌 频道选择原则
- PyTorch :优先
-c pytorch -c nvidia(官方预编译二进制,兼容性最好) - CUDA Toolkit / cudnn :优先
-c nvidia,其次-c conda-forge - 通用 Python 包 :优先
-c conda-forge(更新快,包多) - 不要混用同一个库的多个频道版本,容易出现 ABI 冲突。建环境时频道顺序一次定好。
八、关键路径与文件速查
出问题时先对照这些路径,确认文件是否存在、是否有权限访问。
目录结构
| 用途 | 路径 | 必须存在? |
|---|---|---|
| Miniconda 根目录 | C:\ProgramData\miniconda3 |
是 |
| conda 主程序 | C:\ProgramData\miniconda3\Scripts\conda.exe |
是 |
| conda bat 入口 | C:\ProgramData\miniconda3\Library\bin\conda.bat |
是 |
| PowerShell 模块(关键!) | C:\ProgramData\miniconda3\shell\condabin\Conda.psm1 |
是 |
| PowerShell hook 脚本(关键!) | C:\ProgramData\miniconda3\shell\condabin\conda-hook.ps1 |
是 |
| 系统级环境目录 | C:\ProgramData\miniconda3\envs\ |
是 |
| cuda130 环境(在用) | C:\ProgramData\miniconda3\envs\cuda130 |
是 |
| nvcc.exe 位置 | C:\ProgramData\miniconda3\envs\cuda130\Library\bin\nvcc.exe |
是 |
| cuda130 环境元数据 | C:\ProgramData\miniconda3\envs\cuda130\conda-meta\ |
是 |
| 用户级 .condarc 配置 | C:\Users\lizhi\.condarc |
可选 |
| 系统级 .condarc 配置 | C:\ProgramData\miniconda3\.condarc |
可选 |
| 旧环境(勿用,管理员不可见) | C:\Users\lizhi\.conda\envs\cuda130 |
废弃 |
| PowerShell Profile A | C:\Users\lizhi\Documents\WindowsPowerShell\profile.ps1 |
是 |
| PowerShell Profile B | C:\Users\lizhi\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 |
是 |
10 秒诊断命令
任何时候怀疑环境有问题,依次运行以下 4 条,把输出对比预期就能定位:
bash
Get-ExecutionPolicy -Scope CurrentUser
期望输出: Bypass 或 RemoteSigned
Get-Command conda | Select-Object CommandType, Path
期望: CommandType = Function (来自 Conda.psm1) 或 Application 指向 Library\bin\conda.bat
conda env list
期望: 列出 base + cuda130 (路径 = C:\ProgramData\miniconda3\envs\cuda130)
Test-Path 'C:\ProgramData\miniconda3\envs\cuda130\Library\bin\nvcc.exe'
期望: True
✅ 环境验收标准以上 4 条全部符合预期,再加上 conda activate cuda130; nvcc --version 能显示 V13.0.88,即代表整个 conda + CUDA 环境完全正常。以后不需要再调试安装层面的任何东西。
参考资料
- Anaconda, Inc. --- Conda 官方文档(26.x)。环境管理、配置文件与 init 命令说明。Conda Documentation --- conda 26.5.3 documentation
- Anaconda, Inc. --- Miniconda 下载页。安装参数与静默安装说明。Anaconda Distribution vs. Miniconda - Anaconda
- Microsoft --- PowerShell about_Execution_Policies。执行策略各 scope 的生效顺序。about_Execution_Policies - PowerShell | Microsoft Learn
- NVIDIA --- CUDA Toolkit Documentation 13.x。nvcc 编译链与 Windows 安装说明。CUDA Toolkit Documentation
- 清华大学 TUNA 镜像站 --- Anaconda / Miniconda / conda-forge 镜像使用帮助。Anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
- Anaconda --- Terms of Service Acceptance 流程(2025 起)。使用 defaults / pkgs/main 频道前需显式接受。https://www.anaconda.com/terms-of-service
- Anaconda --- NVIDIA conda 频道迁移公告。自 2026 年 8 月 7 日起停止更新,后续从 defaults 或 conda-forge 获取。nvidia Channel Changes: How to Migrate to main | Anaconda