DebugPy VSCode debugger integration

Contribution by electroglyph, 2025

This registers an in-game command debugpy which starts the debugpy debugger and listens on port 5678. For now this is only available for Visual Studio Code (VS Code).

If you are a JetBrains PyCharm user and would like to use this, make some noise at: https://youtrack.jetbrains.com/issue/PY-63403/Support-debugpy

Credit for this goes to Moony on the Evennia Discord getting-help channel, thx Moony!

Installation

This requires VS Code and debugpy, so make sure you’re using VS Code.

From the venv where you installed Evennia run:

pip install debugpy

Enable the command in Evennia

In your Evennia mygame folder, open up /commands/default_cmdsets.py

add from evennia.contrib.utils.debugpy import CmdDebugPy somewhere near the top.

in CharacterCmdSet.at_cmdset_creation add this under super().at_cmdset_creation():

self.add(CmdDebugPy)

Add “remote attach” option to VS Code debugger

Start VS Code and open your launch.json like this:

screenshot

Add this to your configuration:

        {
            "name": "Python Debugger: Remote Attach",
            "justMyCode": false,
            "type": "debugpy",
            "request": "attach",
            "connect": {
                "host": "127.0.0.1",
                "port": 5678
            },
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "${workspaceFolder}"
                }
            ]
        },

Use 127.0.0.1 for the host if you are running Evennia from the same machine you’ll be debugging from. Otherwise, if you want to debug a remote server, change host (and possibly remoteRoot mapping) as necessary.

Afterwards it should look something like this:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Debugger: Current File",
            "type": "debugpy",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
        },
        {
            "name": "Python Debugger: Remote Attach",
            "justMyCode": false,
            "type": "debugpy",
            "request": "attach",
            "connect": {
                "host": "127.0.0.1",
                "port": 5678
            },
            "pathMappings": [
                {
                    "localRoot": "${workspaceFolder}",
                    "remoteRoot": "${workspaceFolder}"
                }
            ]
        },
    ]
}

(notice the comma between the curly braces)

Usage

Set a breakpoint in VS Code where you want the debugger to stop at.

In Evennia run debugpy command.

You should see “Waiting for debugger attach…”

Back in VS Code attach the debugger:

screenshot

Back in Evennia you should see “Debugger attached.”

Now trigger the breakpoint you set and you’ll be using a nice graphical debugger.


This document page is generated from evennia/contrib/utils/debugpy/README.md. Changes to this file will be overwritten, so edit that file rather than this one.