广告:Codex Token 低价中转站稳定接口 · 快速接入 · 开发者备用通道
Engineering article

VS Code WSL开发环境搭建?生产力工具

WSL开发环境在VS Code中搭建的效率提升绝不是虚言,我亲自踩过不少坑,但最终流程下来,整个开发体验彻底变了。关键点是需要配置好终端、远程连接、文件同步和调试工具。我用的Linux发行版是Ubuntu,装上之后直接在VS Code里打开,通过Remote - WSL扩展直接进入WSL终端。调试Python脚本的时候,用的是Python

VS Code WSL开发环境搭建?生产力工具
配图来源于网络和AI生成,仅供参考。
▌ 技术引导
WSL开发环境在VS Code中搭建的效率提升绝不是虚言,我亲自踩过不少坑,但最终流程下来,整个开发体验彻底变了。关键点是需要配置好终端、远程连接、文件同步和调试工具。我用的Linux发行版是Ubuntu,装上之后直接在VS Code里打开,通过Remote - WSL扩展直接进入WSL终端。调试Python脚本的时候,用的是Python的debugger,配合launch.json配置。一路下来,最核心的是得把WSL的系统路径映射到Windows,特别是路径分离问题,否则文件没法直接拖拽使用。还有权限问题,某些包在WSL里装不了,得全权模式下执行。千万别省略这些细节,否则你可能像我一样,在半天后才发现文件夹找不到,或者Python环境没激活。

配置VS Code的时候,我习惯用settings.json把WSL的默认终端设成bash,这样写脚本和运行命令更顺手。同时,我把extensions的自动安装策略改成了“建议”,避免每次打开都一堆插件弹窗。文件同步这玩意别用默认的,我用的是rsync,配合sync命令,效率比文件拖拽高多了。另外,记得在WSL里安装Windows Subsystem for Linux的版本,最好是2.x,否则有些功能用不了。调试器配置的时候,得确保Python环境在WSL里已经安装好,否则会报错。还有,远程连接的时候如果出现“Connection refused”这类错误,检查一下WSL的网络配置是否正确,特别是IP地址和端口是否匹配。

我见过很多用户把WSL当作Windows的子系统来用,结果根本没意识到它跟Windows是两个独立的环境。所以关键是要区分清楚路径、环境变量和系统命令。比如,在WSL里运行`ls /mnt/c/`才能看到Windows的文件,而不是`ls /`。还有调试的时候,要确保VS Code的debugger配置文件指向正确的Python解释器路径。否则即使你装了Python,也会找不到。另外,不要用WSL的默认存储,改用单独的挂载点,这样文件操作更稳定,不会因为磁盘满了导致崩溃。这些都是我亲手试过的,踩过坑才知道怎么避。

WSL里调试Python的时候,必须用`--no-daemon`参数,否则远程调试会卡死。另外,如果使用Jupyter Notebook,记得在WSL里安装对应版本,否则无法在VS Code里正确显示。还有,网络调试工具像`curl`、`wget`这些,得确保WSL的系统配置允许访问Internet,有些用户因为防火墙或代理设置导致无法联网。还有,文件同步的时候,同步方向要设置成双向,否则修改内容会丢失。总之,这些细节每个都可能影响整个开发流程的流畅度,千万别偷懒。

技术参考

▌ 技术参考

在Windows 10以上版本中,WSL(Windows Subsystem for Linux)已经成为构建开发环境的默认选择。VS Code作为一款轻量级的编辑器,其Remote - WSL扩展能让你在Linux环境中无缝开发,无需切换终端。这可不是什么花哨功能,而是我亲身验证的提升生产力的硬核工具。

搭建WSL环境的第一步是确保你的Windows系统支持WSL 2。打开PowerShell执行`wsl --install`命令,系统会自动下载并安装Ubuntu。不过别急着重启,先检查一下安装的版本。执行`wsl --list --verbose`可以查看当前安装的WSL版本,如果显示的是版本2,那就可以直接使用。否则需要手动启用WSL 2,用`wsl --set-default-version 2`命令。这一步非常重要,否则后续的环境配置会出问题。

安装完Ubuntu后,进入WSL终端,初始化环境时别用默认的`cat /etc/os-release`命令,直接执行`sudo apt update && sudo apt upgrade`,这样能确保系统包是最新的。如果提示找不到某些命令,说明你的Ubuntu版本可能过时了,这时候得手动升级。同时,安装必要的工具,比如`sudo apt install python3-pip`,这能让你在WSL里直接用pip安装Python包。

配置VS Code时,记得安装Remote - WSL扩展。安装完成后,打开文件夹选择WSL环境,系统会自动加载对应的Linux环境。这时候,你可以在VS Code里直接运行命令,比如`python3 --version`,确认环境是否正常。如果发现命令无法识别,可能是因为VS Code的默认终端没有切换到bash,这时候进入设置,搜索`terminal.integrated.defaultProfile.windows`,改成`WSL: Bash`。这一步不改,调试和运行脚本会出错。

文件同步是WSL开发中的一个关键点,必须处理好。VS Code默认会将Windows文件自动同步到WSL,但有时候会出现文件夹找不到的问题。这时候得手动配置`vscode-remote`的路径,去`~/.vscode-server/data/Machine`目录下编辑`remote-cli.json`,确保`mounts`部分包含了`/mnt/c`的映射。否则你可能会在开发过程中反复确认文件是否在正确位置。

调试Python脚本时,VS Code默认的debugger配置是不够的,需要手动配置`launch.json`。在`.vscode`目录下创建`launch.json`文件,填写如下内容:
```json
{
"version": "0.2.0",
"configurations": [
{
"name": "Python: Run in WSL",
"type": "python",
"request": "launch",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"pythonPath": "/usr/bin/python3",
"args": ["-i", "${file}"],
"stopOnEntry": false,
"cwd": "${workspaceFolder}"
}
]
}
```
这段配置能确保你在WSL里调试Python脚本,不会出现解释器路径错误的问题。还有,每次运行脚本前要确保Python环境已经激活,否则会出现找不到模块的错误。

在WSL里运行Python时,一定要用`python3`命令,而不是`python`。这是因为我见过太多用户在装了Python后,执行`python`命令却提示未找到,因为他们没有正确安装或设置环境变量。另外,要确保Python版本和WSL里的版本一致,否则可能会出现兼容性问题。比如,如果你在Windows上用了Python 3.10,那WSL里也必须装同样的版本,否则调试时会出错。

WSL的性能表现取决于你的硬件配置,特别是SSD和内存。我见过不少在低配电脑上使用WSL 2的开发者,结果发现频繁的文件读写会卡顿。这时候得考虑是否将WSL的存储位置迁移到SSD上,这样速度能快不少。此外,不要在WSL里同时运行太多虚拟机,这会占用大量内存,导致整个系统变慢。

远程连接WSL时,如果遇到“Connection refused”这类错误,先检查一下WSL的网络设置。有些用户会因为未正确配置IP地址或端口,导致无法连接。这时候需要运行`hostname -I`查看WSL的IP,并确保在`/etc/hosts`文件中添加了Windows的IP映射。比如在`/etc/hosts`中添加`127.0.0.1 localhost wsl`。这能让你在Windows上通过`wsl`命令访问Linux环境,同时避免DNS解析错误。

WSL的文件系统虽然方便,但权限问题很常见。比如,有些用户在Windows上修改了文件,结果在WSL里无法访问,提示权限不足。这时候要手动调整文件权限,用`sudo chown -R $USER:$USER .`命令将当前目录的所有者改为当前用户。否则你可能会在调试或运行脚本时反复遇到权限错误,浪费大量时间。

如果使用Jupyter Notebook或Jupyter Lab,记得在WSL里安装对应的版本。比如,执行`pip3 install jupyter`之后,启动Jupyter时用`jupyter notebook --generate-config`生成配置文件。另外,要确保WSL的环境支持网络访问,否则在Windows上无法打开Jupyter的本地服务器。这时候可以执行`jupyter notebook --ip=0.0.0.0`,让服务监听所有网络接口。

在WSL里运行Docker时,需要注意与Windows Docker的兼容性问题。有些用户直接在WSL里装Docker,结果发现无法正常启动容器。这时候得确保WSL 2已经正确安装,并且Docker Desktop已经启用了WSL 2后端。如果还是不行,可以在Docker的配置文件中添加`wsl2`参数,让Docker使用WSL 2作为运行环境。

调试Web应用时,比如使用Flask,WSL里的端口要和Windows上的一致。比如,启动Flask应用时用`flask run --host=0.0.0.0`,这样Windows浏览器才能访问WSL的端口。否则你可能会发现应用启动后,访问不了对应的URL,甚至不知道为什么。这时候需要检查一下WSL的端口映射是否正确,确保没有被防火墙拦截。

文件同步效率直接影响开发体验。我觉得`rsync`是最有效的同步工具,相比默认的文件拖拽方式,它能处理大文件和大量文件夹,避免卡顿。配置`rsync`时,要确保在VS Code中启用了远程同步,可以通过`File > Preferences > Settings`,搜索`sync`相关选项,开启同步功能。同时,记得设置同步目录的路径,避免同步到不相关的文件夹。

WSL虽然强大,但它并不是万能的。比如,某些系统级的命令,像`systemctl`在WSL里基本用不了,这时候得用Windows的命令行工具。还有,WSL里安装的GUI程序可能无法在Windows上正常运行,除非你额外配置X Server。不过,大多数情况下你不需要用到这些,因为WSL主要是用于命令行开发。

如果你在WSL里运行Python脚本时遇到错误,检查一下Python环境是否正确激活。有时候,即使你装了Python,但没有正确设置`PATH`变量,导致命令无法识别。这时候要执行`which python3`查看路径是否正确,并在`~/.bashrc`里添加`export PATH=/usr/bin:$PATH`,确保环境变量生效。

有些用户会因为WSL的默认存储路径太小,导致开发过程中磁盘满了。这时候得手动调整WSL的存储位置。执行`wsl --set-default-user username`,然后在`/etc/wsl.conf`中添加`root = /mnt/c/Development`,把WSL的根目录迁移到Windows的某个大容量目录。这样能节省很多空间,避免在开发过程中频繁清理磁盘。

最后,WSL的性能表现和硬盘类型息息相关。如果你用的是传统的HDD,那么WSL的文件读写速度可能跟不上。这时候最好把WSL的根目录迁移到SSD上,或者在安装Ubuntu时选择大容量的存储位置。此外,不要频繁地在WSL里安装新软件,这会占用大量磁盘空间,进而影响性能。这些经验都是我从实际开发中总结出来的,别再踩同样的坑。