本篇文章主要介绍了 vscode 远程调试 python 的方法, 小编觉得挺不错的, 现在分享给大家, 也给大家做个参考一起跟随小编过来看看吧
本文介绍了 vscode 远程调试 python 的方法, 分享给大家, 具有如下:
实验环境
远程服务器: 京东云, 1 核 2G,centos7.3 64bit
本地环境配置
安装 vscode, 实验用的版本是 1.10.2
vscode 配置 python 插件, 实验用的 python 插件版本是 0.7.0
vscode 配置 python 远程调试环境
在. vscode 文件夹新建一个 launch.json 文件, 然后填写下面的代码
- {
- "version": "0.2.0",
- "configurations": [
- {
- "name": "Attach (Remote Debug)",
- "type": "python",
- "request": "attach",
- "localRoot": "${workspaceRoot}",
- "remoteRoot": "/tmp/demo",
- "port": 12345,
- "secret": "my_secret",
- "host": "10.12.34.23"
- }
- ]
- }
注意:/var/web 换成要调试的远程项目路径, port 是调试要打开的端口, host 是远程服务器 IP 地址
服务器环境配置
首先要安装一个 python 库, 叫做 ptvsd, 但是注意版本要用 3.0.0, 用了高一点版本就出问题
然后在你的入口文件加上下面的代码(12345 改成调试端口):
- import ptvsd
- ptvsd.settrace(None, ('0.0.0.0', 12345))
完整 python 代码:
- # coding:UTF-8
- import ptvsd
- ptvsd.settrace(None, ('0.0.0.0', 12345))
- from time import sleep
- from random import random
- for _ in xrange(0, 50):
- sleep(5)
- i = random()
- print(i)
开始调试
在服务器启动工程
在 vscode 里面打好断点
在 vscode 运行调试即可
解决 flask debug 远程调试无法捕捉数据问题
上代码:
- # coding:UTF-8
- from flask import Flask
- import ptvsd
- import socket
- try:
- address = ('127.0.0.1', 11111)
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- s.bind(address)
- except socket.error:
- ptvsd.settrace(None, ('0.0.0.0', 12345))
- app = Flask(__name__)
- @app.route('/')
- def index():
- a = 5 + 6
- return "ok"
- if __name__ == '__main__':
- app.run(host='0.0.0.0', port=3000, debug=True)
原理: 因为 flask 在 debug 模式下, 是 fork 一个子进程来处理 http 请求, 所以应该在子进程调用 ptvsd.settrace(None, ('0.0.0.0', 12345))
来源: http://www.phperz.com/article/18/0226/361510.html