杰瑞科技汇

Sublime如何调试Python代码?

利用 Sublime Text 作为轻量级的代码编辑器和启动器,将真正的“调试”工作交给一个功能强大的 Python 调试器,pdbipdb

Sublime如何调试Python代码?-图1
(图片来源网络,侵删)

下面我将为你介绍两种主流的方法:

  1. 使用 SublimeREPL 插件(推荐,最常用)

    • 优点:集成度高,可以直接在 Sublime 的一个新窗口(REPL)中运行和调试代码,交互性好。
    • 缺点:需要安装插件,配置稍显复杂。
  2. 使用 pdb/ipdb 手动插入断点

    • 优点:无需额外插件,是 Python 自带的调试方式,在任何环境都适用。
    • 缺点:需要在代码中手动添加断点,每次调试前需要修改代码,调试结束后需要移除断点。

使用 SublimeREPL 插件进行调试

这是 Sublime 社区中最流行和成熟的调试方案。

Sublime如何调试Python代码?-图2
(图片来源网络,侵删)

第 1 步:安装必要的软件

  1. Python: 确保你的电脑上已经安装了 Python,pip 可用。
  2. ipdb: pdb 是 Python 自带的调试器,但 ipdb 是它的增强版,提供了更好的用户体验(如语法高亮、自动补全等),强烈推荐使用 ipdb
    pip install ipdb

第 2 步:安装 SublimeREPL 插件

  1. 打开 Sublime Text。
  2. Ctrl + Shift + P (Windows/Linux) 或 Cmd + Shift + P (Mac) 打开命令面板。
  3. 输入 Package Control: Install Package 并回车。
  4. 在弹出的列表中,搜索 SublimeREPL 并点击安装。

第 3 步:配置 SublimeREPL 以使用 ipdb

  1. 同样通过 Ctrl + Shift + P 打开命令面板。

  2. 输入 Preferences: Settings - User 并回车,这会打开你的用户配置文件。

  3. 在配置文件中添加以下 JSON 代码,这会告诉 SublimeREPL 使用 ipdb 而不是默认的 pdb

    {
        "default_extend_env": {
            "PYTHONPATH": "${project}:${project}/lib/python3/site-packages" // 可选,用于设置项目路径
        },
        "repl": {
            "python": {
                // 这里是关键配置,将调试器设置为 ipdb
                "interpreter": "python",
                "selector": "source.python",
                "cmd": ["python", "-i", "-m", "ipdb"],
                "target": "console",
                "show_on_startup": "false",
                "cwd": "$file_path"
            }
        }
    }
    • 解释:
      • "cmd": ["python", "-i", "-m", "ipdb"]: 这是最重要的部分,它告诉 SublimeREPL 不要直接运行 python,而是用 python -m ipdb 的方式启动,这会加载 ipdb 作为交互式调试器。
      • 其他配置项可以根据需要调整,cwd 设置了当前工作目录为文件所在目录,很常用。

第 4 步:开始调试

  1. 打开你的 Python 文件

    Sublime如何调试Python代码?-图3
    (图片来源网络,侵删)
  2. 设置断点: 在你想要程序暂停的代码行,点击行号左侧,会出现一个红色的圆点,这就是断点。

  3. 启动调试器:

    • Ctrl + Shift + P 打开命令面板。
    • 输入 SublimeREPL: Python - RUN current file,注意,我们选择的是 RUN,而不是 IPDB,SublimeREPL 会根据我们上面的配置,自动使用 ipdb 来运行。
    • 或者,你可以使用快捷键,默认没有设置,可以在 Preferences > Key Bindings - User 中自定义,
      { "keys": ["f5"], "command": "run_existing_window_command", "args": {"id": "repl_python_run", "file": "config/Python/Main.sublime-menu"} }

      这样按 F5 就可以运行了。

  4. 调试过程:

    • 程序会启动,并在你设置的断点处暂停。

    • Sublime Text 窗口下方会弹出一个新的控制台窗口,这就是 ipdb 的交互环境。

    • 你会看到 (Pdb) 提示符。

    • 你可以输入各种 ipdb 命令来调试:

      命令 缩写 功能
      next n 执行到当前函数的下一行
      step s 进入函数内部
      continue c 继续执行,直到遇到下一个断点
      list l 显示当前代码段
      pp <variable> 以更友好的方式打印变量值
      quit q 退出调试器
    • 查看变量: 你可以直接输入变量名,然后回车来查看它的值。

    • 继续执行: 输入 c 并回车,程序会继续运行,直到结束或遇到下一个断点。


使用 ipdb 手动插入断点

这种方法更直接,适合不想安装插件的开发者。

第 1 步:安装 ipdb

pip install ipdb

第 2 步:在代码中插入断点

在你的 Python 文件中,使用 import ipdb; ipdb.set_trace() 来设置断点。

# my_script.py
import ipdb
def add(a, b):
    # 在这里设置断点
    ipdb.set_trace()
    result = a + b
    print(f"The result is {result}")
    return result
if __name__ == "__main__":
    x = 10
    y = 20
    sum_result = add(x, y)
    print(f"Final sum: {sum_result}")

第 3 步:运行脚本

  1. 保存文件。
  2. 在终端中,切换到文件所在的目录,然后运行:
    python my_script.py

    或者,你也可以在 Sublime Text 的内置控制台中运行(Ctrl + @ 打开控制台,然后输入 python my_script.py)。

第 4 步:调试过程

程序会在 ipdb.set_trace() 那一行暂停,并打开一个 ipdb 交互式会话。

> /path/to/your/project/my_script.py(6)<module>()
-> result = a + b
(Pdb)

你就可以和方法一中一样,使用 n, s, c, pp x 等命令来调试你的代码了。

优点与缺点

  • 优点:
    • 无需任何插件,轻量级。
    • 非常灵活,可以在任何地方插入断点。
  • 缺点:
    • 每次调试都需要修改源代码,添加 import ipdb; ipdb.set_trace()
    • 调试结束后,需要手动删除这些断点行,否则每次运行都会卡住。
    • 不如 SublimeREPL 集成度高,需要在 Sublime 和终端之间切换。

总结与对比

特性 方法一 (SublimeREPL) 方法二 (手动 ipdb)
易用性 ,无需修改代码,点击断点即可 ,需手动修改代码,调试后需清理
集成度 ,完全在 Sublime 界面内完成 ,依赖外部终端/控制台
灵活性 较高,通过配置文件定制 极高,可在任何逻辑处插入断点
依赖 需要安装 SublimeREPL 插件 仅需 ipdb,无额外依赖
推荐场景 日常开发,频繁调试 快速检查,临时调试,不想装插件时

对于绝大多数 Sublime Python 强烈推荐使用方法一(SublimeREPL + ipdb),它提供了一种无缝、高效的调试体验,将 Sublime Text 的轻量级与专业 IDE 的调试能力结合了起来。

分享:
扫描分享到社交APP
上一篇
下一篇