Windows的vscode使用wsl中的python

本篇文章已经过期!现在vscode已经提供了wsl插件可以直接在wsl下工作

由于个人习惯,exp一般都在windows使用vscode编写,然而windows下无法装上pwntools,一直想使用wsl中的python。然而正常情况下vscode是不支持使用wsl中的python,需要进行一番魔改,令其能拥有自动补全,查找引用等功能。

效果

pwntools自动补全

1.gif

查找引用

2.gif

单步调试

3.gif

配置命令转发

首先在wsl中安装autopep8,pylint,ctags,python等软件

命令转发之前有人写过一个wslgit,作用是将命令从windows转发到linux,拿下来魔改一下就可以使用

项目地址:https://github.com/andy-5/wslgit

由于已经配置完成,最后附件会提供一个整合包

只需要将整合包内如下的文件解压

1.png

随后按下图修改vscode的配置

2.png

记得修改exe的位置

配置目录转换

在配置完转发后自动补全已经可用了,但是查找引用还是废的,因为默认传回的是wsl中的路径。读源码后发现查找引用返回结果时使用了completion.py,在如下目录

1
C:\Users\plusls\.vscode\extensions\ms-python.python-2018.8.0\pythonFiles

备份原文件替换为附件中的即可

随后还需要替换completion.py中的start_path为自己wsl的目录

配置python调试

在vscode中按下F5可以调试,然而由于默认环境变量是无法传递进wsl的,需要设置环境变量WSLENV

使用附件中的LocalDebugClient.js替换如下路径的文件即可

1
C:\Users\plusls\.vscode\extensions\ms-python.python-2018.8.0\out\client\debugger\DebugClients\LocalDebugClient.js

设置环境变量后确实可以调试了,但是断点功能还是残废的,原因和查找引用时一样,都是路径转换的问题

使用附件中的pydevd_file_utils.py替换如下文件

1
C:\Users\plusls\.vscode\extensions\ms-python.python-2018.8.0\pythonFiles\experimental\ptvsd\ptvsd\_vendored\pydevd\pydevd_file_utils.py

附录

附件:wsl.zip