VSCode远程调试Python项目配置指南

落日邮差
落日邮差
发布时间:2026-10-13 | 2人浏览过
原创

本文详细介绍在VSCode中配置Python远程调试的完整流程。涵盖从本地环境搭建、launch.json配置到服务器端ptvsd库安装的具体步骤。特别针对Flask在Debug模式下无法捕捉断点的问题,提供了基于子进程调用的解决方案,帮助开发者高效进行远程代码调试。

本文详细阐述了在VSCode中进行Python远程调试的具体操作方法,旨在为读者提供实用的参考。

实验环境

远程服务器配置为京东云,规格为1核2G,操作系统为CentOS 7.3 64位。

本地环境配置

  1. 首先安装VSCode,本实验使用的版本为1.10.2。
  2. 在VSCode中配置Python插件,实验所使用的Python插件版本为0.7.0。
  3. 接下来配置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地址。

服务器环境配置

首先需要在服务器上安装一个名为ptvsd的Python库,务必注意版本必须使用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)

开始调试

  1. 首先在服务器上启动工程。
  2. 接着在VSCode中设置好断点。
  3. 最后在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))。

以上就是本文的全部内容,希望对各位的学习有所帮助,也欢迎大家继续支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表