一、写在前面1.为什么用Linux系统做为开发工具有什么优势废话版1.真正的“类Unix”开发环境原生工具链很多开发工具如gcc/g、make、git、ssh、vim、python、node为Linux设计。在Linux里打开终端就能直接使用在Windows上则需要安装复杂的模拟环境如MinGW、Cygwin或WSL。命令行强大Linux的Bash、Zsh等Shell配合grep、awk、sed、管道等命令能极其高效地完成文件处理、日志分析、进程管理等任务远超Windows的CMD或PowerShell。2.与服务器环境完全一致互联网上绝大多数服务器超过70%的网站服务器以及云端虚拟机运行的是Linux如Ubuntu、CentOS、Debian。在Linux本地开发的代码直接部署到Linux服务器上基本不会出现环境差异问题。而Windows开发的程序如依赖注册表、反斜杠路径、特定驱动放到Linux服务器上可能需要大量修改。3.包管理器一键安装开发库Linux的包管理器如apt、yum、pacman能像手机应用商店一样一条命令安装几乎所有开发工具和依赖库。例如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的熟悉的操作界面又可以使用UbuntuDocker实现规范的、隔离的、可复现的开发流程同时两个系统之间的交互相对与双系统或两个物理机更方便而且又不像传统虚拟机那样性能损失太大。经过trade off达到了一个比较合理的平衡。二、WSLUbuntu22.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 -- 内存和处理器 -- 按需调整处理器计数内存大小交换大小# 下载UbuntuWSL分发版也会默认下载到C盘此时加上--location指定将 WSL 分发版安装到提前准备好的磁盘空间里避免之后C盘爆炸再导入导出的麻烦操作wsl--install--distribution--location#安装完成后会提示设置用户名和密码推荐将分发版固定到快速访问WSL基本命令Basic commands for WSL | Microsoft Learn3.换源若用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# 先升级一下软件包sudoaptupdatesudoaptupgrdae-y# 安装git、ccurl、构建工具sudoaptinstallgitcurlbuild-essential-y# 配置git .gitconfig位于home目录下gitconfig--globaluser.nameYour Namegitconfig--globaluser.emailyouremail.comgitconfig--globalinit.defaultBranch main三、配置深度学习环境3.1 安装minicondawgethttps://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 安装cudaTODO: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-V3.3 安装pytorch按照PyTorch官网所给命令安装即可pytorch安装在miniconda的虚拟环境里先确定你要用的PyTorch 版本它官方编译时用的什么 CUDA 版本你就用什么版本。不要自己凭感觉装一个cudatoolkit。# 完整验证脚本#!/usr/bin/env pythonimporttorchimportsysdefcheck_cuda():print(*50)print(PyTorch CUDA 验证)print(*50)print(fPython version:{sys.version})print(fPyTorch version:{torch.__version__})print(fCUDA available:{torch.cuda.is_available()})iftorch.cuda.is_available():print(fCUDA version:{torch.version.cuda})print(fcuDNN version:{torch.backends.cudnn.version()})print(fNumber 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)# 测试基本操作xtorch.randn(3,3).cuda()ytorch.randn(3,3).cuda()ztorch.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__:successcheck_cuda()sys.exit(0ifsuccesselse1)四、VScode Claude code deeoseek API4.1Vscode把 VSCode 装在 Windows再用插件连接 WSL部分扩展如C/C扩展在初次使用时会提示“Install in WSL”点击确认即可安装到 WSL 环境。项目文件放在 WSL 的/home/下读写速度最快也避免了 Windows 挂载点/mnt/c的权限和性能问题。开发正确流程Windows 启动 VSCode不打开任何文件夹CtrlShiftP→ 输入WSL: New Window→ 选发行版如Ubuntu-22.04再用File → Open Folder…打开 /home/projects/my_project或者打开WSL终端cd到my_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 WSLWSL中好像是CC Switch在传模型映射到WSL下时会不完整开CC Switch在WSL下使用claude code插件是不会接入deepseek的解决方法有三种如下配置settings.json用户级配置~/.claude/settings.json项目级配置/home/user/projects/你的项目/.claude/settings.json配置环境变量参考接入 Agent 工具 | DeepSeek API Docsvim ~/.bashrc并输入# claude code initialize exportANTHROPIC_BASE_URLhttps://api.deepseek.com/anthropicexportANTHROPIC_AUTH_TOKEN你的 DeepSeek API KeyexportANTHROPIC_MODELdeepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_OPUS_MODELdeepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_SONNET_MODELdeepseek-v4-pro[1m]exportANTHROPIC_DEFAULT_HAIKU_MODELdeepseek-v4-flashexportCLAUDE_CODE_SUBAGENT_MODELdeepseek-v4-flashexportCLAUDE_CODE_EFFORT_LEVELmax# claude code initialize 观察发现无论是使用CC-switch还是配置json文件亦或是配置环境变量都是类似的在WSL中下载CC-switch的Linux版本本人并没有试过但感觉可以应该也是CC-switch自动配置你WSL中的环境配置完成后就可以使用参考教程VSCode配置WSL2环境 Windows必备VSCode开发Linux程序-VSCode-PHP中文网Linux 深度学习环境搭建教程 ( WSL miniconda pytorch cuda cudnn vscode) - 知乎Windows下使用WSL2创建Ubuntu子系统更改安装位置与启动图形桌面不想装双系统WSL2Docker科学开发环境配置全流程_哔哩哔哩_bilibili七十七的德的个人空间-七十七的德个人主页-哔哩哔哩视频Windows环境下WSL部署GPU加速大模型推理框架全流程指南-百度开发者中心官方文档CUDA on WSL 用户指南 — CUDA on WSL 13.2 文档Windows Subsystem for Linux Documentation | Microsoft Learn此文章仅作为学习记录、参考以及分享深度学习环境配置部分还有许多疑点尚未搞清TODO查阅CUDA官方文档的介绍如何在WSL安装CUDA安装在base环境下还是每个conda环境下都需要安装pytorch中包含cuda运行时库和cudnn,是否还需要安装cuda-toolkit和cudnn目前仍处于初步探索阶段相关配置细节还在持续验证中欢迎各位有相关实践经验的朋友指出错误、积极讨论、分享见解。