1. 为什么这样做?
之前使用ssh
连接服务器,然后借助jupyter notebook
修改服务器代码,然后使用pdb
和pdb.set_trace()
在终端调试代码。切换成vs code的原因如下:
- jupyter 中查看python方法时,各个类之间方法互相引用,跳转不方便;
- 查看代码的时候,遇见不了解的方法时,无法时时看到方法的解释和参数说明;
- 调试代码时,查看参数值时不是特别方便。
2. 设备及软件描述:
- mac ,ubantu(16.04)
- visual studio code(1.29.1)
3.修改远程服务器代码
修改服务器代码使用vscode的插件sftp
,安装完成后。配置过程如下:
pic 1
sftp.json
文件。使用快捷键(mac)shift+cmd+p
,然后输入SFTP:Config
,打开sftp.json
文件。当然sftp.json
中还可以配置属性password
,ignore
.具体查看sftp的说明。
pic 22.同步本地代码到本地。命令为:
SFTP:sync Remote -> Local
pic 3
- 修改代码,保存后,同步到服务器。命令为:
SFTP:sync Local -> Remote
4. 本地调试远程代码(敲黑板,划重点,不认真看的考试不及格)
这里必须得意下:我在引擎上搜索了很久,要么是pycharm的方法 要么是visual studio 版本不一样,不能完全参考。(包括官网)。当然这里我还是主要参考官方文档和resolver101757github的提问。,像他们的成果表示深深的感谢。
pic 4
- 设置launch.json。
pic 5
- 选择python :attach.
pic 6
- 设置attach(敲黑板)。由于vscode 默认没有生成如下代码,会导致可以服务器监听到,但是无法做到本地调试,而且当添加断电时,总是提示
pydev debugger: warning: trying to add breakpoint to file that does not exist:
。我就是在这里苦苦寻找了一天半才找到解决办法。
- 接下来已经配置完成。需要做的就是讲代码从服务器同步到本地,在代码开头(import之前)添加如下代码。然后在将代码同步到服务器。
import ptvsd # 使用pip 就可以安装,网上有人说需要版本小于4.1.3,亲测4.2.0没问题。
import time
ptvsd.enable_attach(address=("10.0.3.0",5678)) # 这里的端口号大一些,大于1024,否则也会报错。
ptvsd.wait_for_attach()
time.sleep(1)
pic 7
- 在vscode终端使用ssh 连接上服务器,然后运行代码,在vscode 中点击调试按钮(杀虫剂图标),选择上面设置的python:attach,点击运行按钮。如下图:
- 正确就可以成功启动本地调试。
5. 可能的报错
python socket.error: [Errno 98] Address already in use [closed]
ptvsd.enable_attach(address=("10.0.3.0",5678)) ,端口号太小,之前我就取22,改成大一些就OK,5678是默认的。pydev debugger: warning: trying to add breakpoint to file that does not exist
返回去看专题4的问题3(设置attach(敲黑板))
网友评论