当前位置: 首页 > news >正文

Windows11系统使用WSL2创建Ubuntu子系统并配置深度学习环境加VScode+ Claude code +deepseek API

一、写在前面

1.为什么用Linux系统做为开发工具,有什么优势

废话版

  • 1.真正的“类Unix”开发环境
    • 原生工具链:很多开发工具(如gcc/g++makegitsshvimpythonnode)为Linux设计。在Linux里,打开终端就能直接使用;在Windows上则需要安装复杂的模拟环境(如MinGW、Cygwin或WSL)。
    • 命令行强大:Linux的Bash、Zsh等Shell配合grepawksed、管道等命令,能极其高效地完成文件处理、日志分析、进程管理等任务,远超Windows的CMD或PowerShell。
  • 2.与服务器环境完全一致
    • 互联网上绝大多数服务器(超过70%的网站服务器,以及云端虚拟机)运行的是Linux(如Ubuntu、CentOS、Debian)。在Linux本地开发的代码,直接部署到Linux服务器上基本不会出现环境差异问题。
    • 而Windows开发的程序(如依赖注册表、反斜杠路径、特定驱动)放到Linux服务器上可能需要大量修改。
  • 3.包管理器:一键安装开发库
    • Linux的包管理器(如aptyumpacman)能像手机应用商店一样,一条命令安装几乎所有开发工具和依赖库。例如:sudo apt install build-essential libssl-dev
    • Windows需要手动去各个官网下载安装包、配置环境变量,管理依赖库则常常令人头疼(DLL Hell)。
  • 4.开源与透明
    • 代码开源意味着出现BUG或有特殊需求时,开发者可以查看甚至修改操作系统和库的源代码。
    • 系统配置通过清晰的文本文件完成(如/etc/nginx/nginx.conf),便于版本控制(Git)和自动化运维(Ansible、Docker)。Windows的注册表机制复杂且难以脚本化。
  • 5.轻量高效,资源占用低
    • 不带图形界面的Linux服务器版只占用几百MB内存,而Windows Server动辄2-4GB。这意味着一台低成本云服务器上,Linux可以运行更多服务。
    • 文件系统(如ext4、XFS)和高并发网络模型(epoll)在大量小文件读写、网络连接处理上性能更优。
  • 6.对容器和云原生友好
    • Docker、Kubernetes、Istio等现代云原生技术本身诞生于Linux。在Linux上运行容器性能接近原生(不需要像Windows那样使用Hyper-V虚拟机)。
    • 几乎所有CI/CD流水线(Jenkins、GitLab CI、GitHub Actions)的默认运行环境都是Linux。
  • 7.社区与习惯
    • 开源项目几乎都以Linux为“一等公民”提供支持。例如,Python的很多科学计算库、Node.js的native addon、Ruby的gem在Linux上编译安装最顺畅。
    • 新手遇到报错,搜索引擎中大部分解决方案也是针对Linux系的。

思考版

对于我做深度学习,之后想做机器人开发来说: 1.有些库使用Linux的包管理器管理就很方便。 2.可能有些包或者软件第一时间会发行Linux版本的或者只在Linux系统下有,例如ros就需要在Ubuntu下开发使用,再比如,现在许多的项目都在Linux系统下开发,我从开源网站pull一个想学习的项目,但这个项目是在Linux系统下开发的,给出的environment.yaml文件中需要的环境有很多基于Linux系统,我在Windows系统下复现就不得不面临环境配置问题,只能一个个去找这些库在Windows系统下的平替,十分麻烦。 3.Linux系统资源占用低,在跑深度学习代码时,释放性能更优,速度更快。 4.在Linux本地开发的代码,直接部署到Linux服务器或云服务器上基本不会出现环境差异问题。 5.拓展思维视野、学习提高。大量的服务器基于Linux运行,大量的智能设备基于Linux。在Linux系统无处不在的情况下,对Linux一无所知必然会给开发生涯造成很大的制约。
2.为什么选择WSL
正如前面所说,Linux系统适合作为一个开发工具,主要解决环境问题,代码运行等。但有经验或者想要有更好体验的开发人员不应该直接用Linux去进行开发。 实际生活中,会用到很多其他软件,例如Microsoft Office、QQ、微信、游戏等,这些软件仍然是Windows系统的护城河。虽然有些软件在Linux系统上有平替但体验和生态完整度仍有差距,因为在桌面操作系统领域,Windows长期占据全球约70%-80%的市场份额,Windows系统下的软件自然更新快,商业决策自然倾向Windows。Windows商业软件公司有专职UI/UX设计师、用户调研团队,会投入大量资金打磨交互细节。Linux上的开源软件通常是开发者“我需要这个功能,顺手写一个”,界面可能停留在工程师审美,用户体验的差距显而易见。 在从大一就开始使用双系统的经历来说,双系统虽然可以更好的释放硬件性能,但来回切换系统的操作实在麻烦,反人类;况且一旦环境被配置到不可挽回的地步,重新安装双系统的步骤甚是繁琐。虚拟机的性能太差,速度慢,且不能显卡直通(现在貌似可以)。远程开发没有(云)服务器或第二台设备。 综上在此选择Windows11 + WSL + IDE Remote-WSL + Docker插件的方式进行日常学习生活开发。WSL2既可以享受Windows的熟悉的操作界面;又可以使用Ubuntu+Docker实现规范的、隔离的、可复现的开发流程;同时两个系统之间的交互,相对与双系统或两个物理机更方便;而且又不像传统虚拟机那样性能损失太大。经过trade off,达到了一个比较合理的平衡。

二、WSL+Ubuntu22.04安装

1.打开Windows的三个虚拟化功能

启动或关闭Windows功能,勾选Hyper-v适用于Linux的Windows子系统虚拟机平台完成后等待启动后根据提示重启电脑

2.安装WSL2和Ubuntu

现在,可以使用单个命令安装运行 WSL 所需的一切内容。 在管理员模式下打开 PowerShell

# 下载没有分发版的WSL,WSL默认下载在C盘wsl--install--no-distribution# 下载完成后打开WSL Settings --> 网络 --> 网络模式选择Mirrored# 打开WSL Settings --> 内存和处理器 --> 按需调整处理器计数,内存大小,交换大小# 下载Ubuntu,WSL分发版也会默认下载到C盘,此时加上--location指定将 WSL 分发版安装到提前准备好的磁盘空间里,避免之后C盘爆炸再导入导出的麻烦操作wsl--install--distribution--location#安装完成后会提示设置用户名和密码

推荐将分发版固定到快速访问

WSL基本命令:Basic commands for WSL | Microsoft Learn

3.换源

若用apt安装开发工具,换一个国内的镜像源可以大幅提升下载速度

# 备份源文件sudocp/etc/apt/sources.list /etc/apt/sources.list.baksudonano/etc/apt/sources.list# 打开源文件,清空文件,并粘贴以下内容# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiversedeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# 先升级一下软件包sudoaptupdate&&sudoaptupgrdae-y# 安装git、ccurl、构建工具sudoaptinstallgitcurlbuild-essential-y# 配置git .gitconfig位于home目录下gitconfig--globaluser.name"Your Name"gitconfig--globaluser.email"your@email.com"gitconfig--globalinit.defaultBranch main

三、配置深度学习环境

3.1 安装miniconda
wgethttps://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.shsudochmod777Miniconda3-latest-Linux-x86_64.sh ./Miniconda3-latest-Linux-x86_64.sh# 安装完成后conda会自动配置好环境变量source~/.bashrc# 如果WSL命令提示符前出现_(base)_即代表配置成功
3.2 安装cuda

TODO:pytorch里自带了cuda运行时库和cudnn,不编译的话无需下载cuda-toolkit
在CentOS上PyTorch版本更新策略是什么 - 问答 - 亿速云里写道优先用 conda 管理cudatoolkit,减少与系统 CUDA 的耦合与冲突。
按理来说conda会将base环境与虚拟环境隔离开来,base下安装的cuda不会对虚拟环境产生影响,实测在base中没有下载cuda,虚拟环境环境中只下载pytorch的情况下torch.cuda.is_available()仍为true,猜测应该是pytorch里自带了cuda运行时库的原因

# 查看显卡驱动和最高支持的cuda版本nvidia-smi# 是否安装cuda-toolkitnvcc-V
3.3 安装pytorch

按照PyTorch官网所给命令安装即可
pytorch安装在miniconda的虚拟环境里,先确定你要用的PyTorch 版本,它官方编译时用的什么 CUDA 版本,你就用什么版本。不要自己凭感觉装一个cudatoolkit

# 完整验证脚本#!/usr/bin/env pythonimporttorchimportsysdefcheck_cuda():print("="*50)print("PyTorch CUDA 验证")print("="*50)print(f"Python version:{sys.version}")print(f"PyTorch version:{torch.__version__}")print(f"CUDA available:{torch.cuda.is_available()}")iftorch.cuda.is_available():print(f"CUDA version:{torch.version.cuda}")print(f"cuDNN version:{torch.backends.cudnn.version()}")print(f"Number of GPUs:{torch.cuda.device_count()}")foriinrange(torch.cuda.device_count()):print(f"\nGPU{i}:{torch.cuda.get_device_name(i)}")print(f" Memory:{torch.cuda.get_device_properties(i).total_memory/1e9:.2f}GB")# 测试基本操作x=torch.randn(3,3).cuda()y=torch.randn(3,3).cuda()z=torch.matmul(x,y)print(f"\n✓ GPU test passed! Result shape:{z.shape}")returnTrueelse:print("\n✗ CUDA is not available. Using CPU only.")returnFalseif__name__=="__main__":success=check_cuda()sys.exit(0ifsuccesselse1)

四、VScode + Claude code + deeoseek API

4.1Vscode

把 VSCode 装在 Windows,再用插件连接 WSL,部分扩展(如C/C++扩展)在初次使用时会提示“Install in WSL”,点击确认即可安装到 WSL 环境。
项目文件放在 WSL 的/home/下,读写速度最快,也避免了 Windows 挂载点(/mnt/c)的权限和性能问题。

开发正确流程:

  • Windows 启动 VSCode(不打开任何文件夹)
  • Ctrl+Shift+P→ 输入WSL: New Window→ 选发行版(如Ubuntu-22.04),再用File → Open Folder…打开 `/home/projects/my_project
  • 或者打开WSL终端cdmy_project输入code.

验证是否成功

  • 状态栏左下角显示WSL: Ubuntu-22.04,新建终端自动是bash,且echo $PATH不含C:盘路径
4.2 claude code + deepseek API

目的:在Windows和WSL下都可以使用claude code for vscode插件
安装Claude code并配置deepseek API的教程网上已有很多,不再赘述,具体可参考
沉默的羔丸voov的个人空间-沉默的羔丸voov个人主页-哔哩哔哩视频 04-29 05-03两个日期的视频
Windows通过WSL安装和配置Claude Code分步指南-开发者社区-阿里云
Claude Code 安装 & 配置指南(Windows 10 + WSL2) - zheyi420 - 博客园

这里主要解决WSL中无法使用claude code for vscode插件的问题

4.2.1Windows

在Windows系统下推荐使用CC-switch,可以方便快捷的切换其他大模型。当然也可以配置

4.2.2 WSL

WSL中,好像是CC Switch在传模型映射到WSL下时,会不完整,开CC Switch在WSL下使用claude code插件是不会接入deepseek的,解决方法有三种如下:

  1. 配置settings.json
    • 用户级配置~/.claude/settings.json
    • 项目级配置/home/user/projects/你的项目/.claude/settings.json
  2. 配置环境变量
    参考接入 Agent 工具 | DeepSeek API Docs
    vim ~/.bashrc并输入
    # <<< claude code initialize <<<exportANTHROPIC_BASE_URL=https://api.deepseek.com/anthropicexportANTHROPIC_AUTH_TOKEN=<你的 DeepSeek API Key>exportANTHROPIC_MODEL=deepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_OPUS_MODEL=deepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_SONNET_MODEL=deepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_HAIKU_MODEL=deepseek-v4-flashexportCLAUDE_CODE_SUBAGENT_MODEL=deepseek-v4-flashexportCLAUDE_CODE_EFFORT_LEVEL=max# <<< claude code initialize <<<

观察发现无论是使用CC-switch,还是配置json文件,亦或是配置环境变量都是类似的

  1. 在WSL中下载CC-switch的Linux版本(本人并没有试过但感觉可以,应该也是CC-switch自动配置你WSL中的环境)

配置完成后就可以使用

参考教程:

VSCode配置WSL2环境 Windows必备VSCode开发Linux程序-VSCode-PHP中文网

Linux 深度学习环境搭建教程 ( WSL + miniconda + pytorch + cuda + cudnn + vscode) - 知乎
Windows下使用WSL2创建Ubuntu子系统(更改安装位置与启动图形桌面)

不想装双系统?WSL2+Docker,科学开发环境配置全流程_哔哩哔哩_bilibili

七十七的德的个人空间-七十七的德个人主页-哔哩哔哩视频

Windows环境下WSL部署GPU加速大模型推理框架全流程指南-百度开发者中心

官方文档:

CUDA on WSL 用户指南 — CUDA on WSL 13.2 文档

Windows Subsystem for Linux Documentation | Microsoft Learn

此文章仅作为学习记录、参考以及分享,深度学习环境配置部分还有许多疑点尚未搞清:
TODO

  1. 查阅CUDA官方文档的介绍如何在WSL安装CUDA,安装在base环境下还是每个conda环境下都需要安装
  2. pytorch中包含cuda运行时库和cudnn,是否还需要安装cuda-toolkit和cudnn

目前仍处于初步探索阶段,相关配置细节还在持续验证中,欢迎各位有相关实践经验的朋友指出错误、积极讨论、分享见解。

http://www.jsqmd.com/news/800741/

相关文章:

  • MCA Selector终极指南:Minecraft世界区块管理的核心技术解析与实战应用
  • LED热管理:原理、优化与工程实践
  • CTF实战:从GXYCTF2019的gakki题解看隐写与字频统计的攻防艺术
  • 人生感悟 --- 为什么我们生活中同一件事有多个品牌,他们到底有什么区别
  • 国内知名的颗粒机工厂
  • 若依框架实战:参数验证异常处理(手机号码格式验证案例)
  • Windows安卓子系统开发指南:从零开始掌握跨平台应用部署
  • 母亲节文案引争议,OPPO 再致歉!
  • sage-wiki配置教程
  • Educational Codeforces Round 189 (Rated for Div. 2) F. String Cutting
  • RTOS抢占式调度原理与工程实践指南
  • 澎湃 OS4 底层重构!小米正式告别 MIUI
  • Affect Pulse AI:为AI助手注入轻量级情感交互层的实践指南
  • AI 技术日报 - 2026-05-12
  • Murata村田FB磁珠原厂原装一级代理商分销经销批发
  • 基于CLIP的本地化AI图像标注工具:原理、部署与优化实践
  • LazyAgent框架解析:快速构建AI智能体的开发实践
  • 国内可水洗蜡笔品牌哪家质量好?实测核心维度对比 - 得赢
  • 从ARIMA差分到神经网络:手把手教你用MIM网络搞定时空序列预测中的‘非平稳’难题
  • TalonOS与claw-extensions:构建AI智能体自主协作的认知框架与插件生态
  • 2026年4月可靠的活性炭吸附供应厂家推荐,催化燃烧RTO/RCO装置/湿式打磨台,活性炭吸附生产厂家怎么选择 - 品牌推荐师
  • QINGDA清达原厂原装一级代理商分销经销渠道
  • @valid和@Validated的区别是什么?
  • [BUUCTF]内涵的软件
  • 基于MCP协议的AI智能体如何自动化CRM数据管理与广告投放
  • VLA技术研究
  • Perplexity接入ScienceDirect文献库全链路解析(2024科研人必抢的AI学术入口)
  • 前端周报:Remix 3、Node 26 与 Chrome 148
  • Linux 性能分析工具 sar 历史数据缺失如何配置 sysstat 服务?
  • 别再死记硬背公式了!用Python动画可视化tf.nn.depth_to_space的完整数据搬运过程