VSCode编辑Python脚本破坏shebang导致WSL执行报错求解
你遇到的报错核心是换行符格式不兼容:Windows默认用CRLF(\r\n)作为行尾结束符,而WSL的Linux环境仅识别LF(\n)作为行尾,报错里的^M就是未被识别的回车符\r,会被系统算入shebang指定的解释器路径里,导致找不到对应程序。
解决方法
1. 全局设置VSCode默认行尾符为LF
- 打开VSCode设置,搜索
files.eol - 将下拉选项从默认的
auto改为\n - 之后所有新建的文件都会默认使用Linux兼容的LF换行符
2. 针对已有项目单独设置换行符
如果不想全局修改所有文件的换行规则,可以给单个项目配置:
- 在项目根目录新建
.vscode/settings.json文件 - 添加如下配置:
{ "files.eol": "\n" }
- 该配置仅对当前项目生效,优先级高于全局设置
3. 修改当前打开文件的换行符
针对已经被改成CRLF的现有脚本,可以直接在VSCode界面一键切换:
- 点击VSCode底部状态栏右侧显示的
CRLF按钮 - 在弹出的选项中选择
LF即可,保存文件后修改生效
4. 批量修复WSL中已有文件的换行符
如果有大量已经被改成CRLF的脚本,可以在WSL终端中用dos2unix工具批量转换:
- 先安装工具:
sudo apt install dos2unix - 转换单个文件:
dos2unix marshal.py - 批量转换当前目录所有py文件:
dos2unix *.py
内容的提问来源于stack exchange,提问作者WaXxX333
相关产品推荐
相关产品推荐

