Conda + CUDA 环境安装与使用完全指南

技术文档 · 永久存档

Conda + CUDA 环境安装与使用完全指南

基于 Windows 系统,从 Miniconda 安装到 CUDA Toolkit 部署,涵盖本次踩过的全部坑、根因分析、故障速查表与后续日常使用规范。

conda 26.5.3CUDA 13.0.2 (nvcc V13.0.88)RTX 5060 Ti 16GBWindows 10/11 x64

目 录

  1. 一、已安装环境速览
  2. [二、3 步快速上手(日常使用)](#二、3 步快速上手(日常使用))
  3. 三、标准安装流程(避免重踩坑)
  4. [四、6 大问题根因与永久解决方案](#四、6 大问题根因与永久解决方案)
  5. 五、故障排查速查表
  6. [六、PowerShell Profile 永久配置](#六、PowerShell Profile 永久配置)
  7. 七、后续使用指南
  8. 八、关键路径与文件速查

一、已安装环境速览

本次安装的全部组件如下,均已验证可用。

硬件与驱动

项目 说明
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 · 标准安装流程

  1. 检查 GPU 驱动 终端运行 nvidia-smi,确认驱动版本和 CUDA 上限。你的驱动 591.55 支持 CUDA ≤ 13.1。没有驱动请先到 NVIDIA 官网下载安装。

  2. 下载 Miniconda 推荐从清华镜像下载:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/Miniconda3-latest-Windows-x86_64.exe

  3. 运行安装程序(关键:管理员身份 + 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
  4. 设置 PowerShell 执行策略

    bash 复制代码
    Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Bypass -Force

    Bypass 是最省心的选择。RemoteSigned 也可以,但要对每个 profile 文件执行 Unblock-File

  5. 初始化 conda

    bash 复制代码
    & 'C:\ProgramData\miniconda3\Scripts\conda.exe' init powershell
  6. 重启 PowerShell,配置清华镜像源

    bash 复制代码
    conda 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
  7. 接受 Anaconda Terms of Service(必须,否则 create/clone 会失败)

    bash 复制代码
    conda 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'
  8. 创建 CUDA 环境(关键:指定到系统目录 envs) 不要让 conda 写入用户目录~\.conda\envs)。务必把环境创建到系统安装目录下的 envs,这样普通终端和管理员终端都能访问。

    bash 复制代码
    conda create -p 'C:\ProgramData\miniconda3\envs\cuda130' `
      -c nvidia -c conda-forge cuda=13.0.2 -y
  9. 重启 PowerShell,验证

    bash 复制代码
    conda 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. 安装时必须选 AllUsersC:\ProgramData 2. 手动追加 4 条路径到用户 PATH:miniconda3ScriptscondabinLibrary\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: cuda130conda 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 环境完全正常。以后不需要再调试安装层面的任何东西。

参考资料

  1. Anaconda, Inc. --- Conda 官方文档(26.x)。环境管理、配置文件与 init 命令说明。Conda Documentation --- conda 26.5.3 documentation
  2. Anaconda, Inc. --- Miniconda 下载页。安装参数与静默安装说明。Anaconda Distribution vs. Miniconda - Anaconda
  3. Microsoft --- PowerShell about_Execution_Policies。执行策略各 scope 的生效顺序。about_Execution_Policies - PowerShell | Microsoft Learn
  4. NVIDIA --- CUDA Toolkit Documentation 13.x。nvcc 编译链与 Windows 安装说明。CUDA Toolkit Documentation
  5. 清华大学 TUNA 镜像站 --- Anaconda / Miniconda / conda-forge 镜像使用帮助。Anaconda | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
  6. Anaconda --- Terms of Service Acceptance 流程(2025 起)。使用 defaults / pkgs/main 频道前需显式接受。https://www.anaconda.com/terms-of-service
  7. Anaconda --- NVIDIA conda 频道迁移公告。自 2026 年 8 月 7 日起停止更新,后续从 defaults 或 conda-forge 获取。nvidia Channel Changes: How to Migrate to main | Anaconda
相关推荐
软糖姐姐9 小时前
Python开篇——简介、pip和conda
python·conda·pip·数据科学·
叶 落2 天前
Mac 通过 Miniconda 安装 Python
python·macos·conda·miniconda
冰心孤城2 天前
Conda、Anaconda、Miniconda对比分析
conda
不明觉厉二十年2 天前
uv Windows配置
conda·pip
心念枕惊3 天前
Conda 环境一键搬家:用 conda-pack 打包带走,连网都不用
conda·neo4j
西邮彭于晏4 天前
Conda 常用命令速查手册:从入门到精通
windows·conda
激动的兔子5 天前
关于Anaconda的使用心得pkgs.trash清理
conda
xier_ran6 天前
uv 与 conda 详解:Python 环境管理的两条路线
python·conda·uv
Yolanda_20226 天前
在vscode终端中可使用pip,但是cmd终端中找不到命令 pip问题的解决
vscode·python·conda·pip