如何编写Bat脚本打开WSL并激活虚拟环境(venv)?
解决WSL中通过Bat脚本激活Python虚拟环境报错问题
你的Bat脚本执行时提示'source' is not recognized as an internal or external command, operable program or batch file.,问题出在Bat对多行引号的解析逻辑上——换行符会被当成命令分隔,导致source命令被Windows的CMD而非WSL的Bash执行,自然会报错。
修复方案一:单行命令传递(最直接)
把WSL内要执行的命令合并成单行,用分号分隔,确保整个字符串被正确传给Bash执行,同时添加exec bash保持激活后的环境会话:
@ECHO OFF ECHO Opening Django venv on WSL... wsl bash -c "echo 'Running WSL successful'; echo 'Activating Django venv...'; source venv/Django_cups/bin/activate; echo 'Virtual environment activated successfully'; exec bash"
exec bash会替换当前Bash进程,启动一个保持虚拟环境激活状态的新会话,无需再单独调用wsl命令,避免新开的会话丢失环境。
修复方案二:用独立Bash脚本(可读性更好)
如果需要保持命令的多行可读性,可以把WSL内的逻辑写到单独的Bash脚本中:
- 在WSL的用户主目录创建
activate_venv.sh:
#!/bin/bash echo 'Running WSL successful' echo 'Activating Django venv...' source venv/Django_cups/bin/activate echo 'Virtual environment activated successfully' exec bash
- 给脚本添加执行权限:
chmod +x ~/activate_venv.sh
- 修改Bat脚本调用这个脚本:
@ECHO OFF ECHO Opening Django venv on WSL... wsl bash -c "~/activate_venv.sh"
内容的提问来源于stack exchange,提问作者Grey Cat
相关产品推荐
相关产品推荐

