{"library":"ptvsd","title":"ptvsd (Python Tools for Visual Studio Debugger)","description":"ptvsd is a remote debugging server for Python, primarily used to enable debugging capabilities in development environments like Visual Studio and Visual Studio Code. While its last stable release was 4.3.2 in August 2019, it has largely been superseded by `debugpy`, which is based on ptvsd's development branch. All future development for Microsoft's Python debugger is happening in `debugpy`.","language":"python","status":"deprecated","last_verified":"Sun May 17","install":{"commands":["pip install ptvsd"],"cli":null},"imports":["import ptvsd"],"auth":{"required":false,"env_vars":[]},"quickstart":{"code":"import ptvsd\nimport os\n\n# Enable remote debugging. By default, listens on all interfaces (0.0.0.0) and port 5678.\n# The 'address' can be configured via environment variables for flexibility.\n# For a more secure setup, specify a host (e.g., '127.0.0.1') and/or a secret (ptvsd 3.x required it).\n\n# Example using environment variables for host and port\nDEBUG_HOST = os.environ.get('PTVSD_HOST', '0.0.0.0')\nDEBUG_PORT = int(os.environ.get('PTVSD_PORT', 5678))\n\nprint(f\"Waiting for debugger attach on {DEBUG_HOST}:{DEBUG_PORT}\")\nptvsd.enable_attach(address=(DEBUG_HOST, DEBUG_PORT))\n\n# Optional: Wait for the debugger to attach before continuing execution.\n# This is useful when debugging script startup.\n# Remove or comment out in production or if your debugger automatically attaches early.\nptvsd.wait_for_attach()\n\nprint(\"Debugger attached. Continuing execution...\")\n\ndef my_function():\n    x = 10\n    y = 20\n    # Use breakpoint() for Python 3.7+ or ptvsd.break_into_debugger() for older Python versions\n    breakpoint() # This will pause execution if a debugger is attached\n    z = x + y\n    print(f\"Result: {z}\")\n\nmy_function()\n","lang":"python","description":"This quickstart demonstrates how to initialize ptvsd for remote debugging within a Python script. It sets up a listening server that a debugger (e.g., Visual Studio Code) can connect to. It uses environment variables for configuration for better portability and includes an optional `wait_for_attach()` call to pause execution until the debugger connects. A `breakpoint()` call is included to show how to trigger a debugger pause during execution.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":{"tag":null,"tag_description":null,"last_tested":"2026-05-17","installed_version":"4.3.2","pypi_latest":"4.3.2","is_stale":false,"summary":{"python_range":"3.10–3.9","success_rate":100,"avg_install_s":2.2,"avg_import_s":0.85,"wheel_type":"wheel"},"results":[{"runtime":"python:3.10-alpine","python_version":"3.10","os_libc":"alpine (musl)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.88,"mem_mb":15.4,"disk_size":"45.6M"},{"runtime":"python:3.10-slim","python_version":"3.10","os_libc":"slim (glibc)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.1,"import_time_s":0.66,"mem_mb":15.4,"disk_size":"46M"},{"runtime":"python:3.11-alpine","python_version":"3.11","os_libc":"alpine (musl)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":1.26,"mem_mb":16.7,"disk_size":"49.2M"},{"runtime":"python:3.11-slim","python_version":"3.11","os_libc":"slim (glibc)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.2,"import_time_s":1.02,"mem_mb":16.7,"disk_size":"50M"},{"runtime":"python:3.12-alpine","python_version":"3.12","os_libc":"alpine (musl)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.83,"mem_mb":15.3,"disk_size":"39.9M"},{"runtime":"python:3.12-slim","python_version":"3.12","os_libc":"slim (glibc)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.1,"import_time_s":0.77,"mem_mb":15.3,"disk_size":"40M"},{"runtime":"python:3.13-alpine","python_version":"3.13","os_libc":"alpine (musl)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.78,"mem_mb":16.1,"disk_size":"39.6M"},{"runtime":"python:3.13-slim","python_version":"3.13","os_libc":"slim (glibc)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.1,"import_time_s":0.78,"mem_mb":16.1,"disk_size":"40M"},{"runtime":"python:3.9-alpine","python_version":"3.9","os_libc":"alpine (musl)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":null,"import_time_s":0.81,"mem_mb":14.8,"disk_size":"45.2M"},{"runtime":"python:3.9-slim","python_version":"3.9","os_libc":"slim (glibc)","variant":"ptvsd","exit_code":0,"wheel_type":"wheel","failure_reason":null,"import_side_effects":"noisy","install_time_s":2.5,"import_time_s":0.71,"mem_mb":14.8,"disk_size":"46M"}]}}