VSCode(WSL Ubuntu22.04)配置task用black格式化全目录ipynb文件
解决WSL下VSCode用black命令行格式化所有ipynb文件的tasks.json配置
核心问题是Windows路径与WSL路径的转换,直接用wslpath转换时要注意参数和执行环境,以下是可适配所有层级ipynb文件的tasks.json配置:
{ "version": "2.0.0", "tasks": [ { "label": "black format ipynb", "type": "shell", "command": "wsl", "args": [ "black", "--ipynb", "$(wslpath -u \"${workspaceFolder}\")/$(wslpath -u \"${relativeFile}\")" ], "problemMatcher": [], "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared", "showReuseMessage": true, "clear": false } } ] }
配置说明:
wsl命令:直接调用WSL环境执行后续的black命令,确保路径转换和命令执行都在Ubuntu-22.04环境中进行wslpath -u参数:-u表示将Windows路径转换为WSL的Unix风格路径,分别转换工作区根目录和当前文件的相对路径,拼接后得到WSL中可识别的完整文件路径--ipynb参数:让black支持Jupyter Notebook文件的格式化problemMatcher: []:禁用问题匹配,避免VSCode因black的输出格式报错group设置:将任务设为默认构建任务,方便通过快捷键触发
注意事项:
- 确保WSL的Ubuntu-22.04环境中已安装支持ipynb的black:
pip install black[jupyter] - 若要将该任务设为默认格式化任务,可在VSCode的
settings.json中添加:"[jupyter-notebook]": { "editor.defaultFormatter": "vscode.tasks" } - 也可通过快捷键绑定触发任务,比如在
keybindings.json中添加:{ "key": "ctrl+shift+i", "command": "workbench.action.tasks.runTask", "args": "black format ipynb" }
内容的提问来源于stack exchange,提问作者vimchun
相关产品推荐
相关产品推荐

