首页 游戏 软件 资讯 排行榜 专题
首页
编程语言
Ubuntu系统配置Python远程调试环境详细教程

Ubuntu系统配置Python远程调试环境详细教程

热心网友
61
转载
2026-05-07

在 Ubuntu 上配置 Python 远程调试

当你的代码跑在远程服务器上,本地却想逐行“透视”它的执行过程时,远程调试就成了刚需。别担心,这事儿没想象中那么复杂。下面咱们就来聊聊几种主流方案,帮你打通本地与远程的调试通道。

免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈

方案一:VS Code + Remote-SSH + debugpy(推荐组合)

这套组合堪称当前最流畅的远程调试体验之一,核心思路是利用 VS Code 强大的远程开发能力。

  • 本地安装 VS Code 扩展:首先,确保你的 VS Code 已经安装并启用了两个关键扩展:“Remote - SSH” 和 “Python”。
  • 建立 SSH 连接:点击 VS Code 左下角的绿色图标,选择 “Remote Explorer” → “SSH Targets: Add New SSH Host”。填入你的远程主机信息(格式如 user@remote_host),连接信息会保存到 ~/.ssh/config 文件中,之后便可一键连接远程 Ubuntu 环境。
  • 远程环境准备:连接成功后,重点来了——需要在远程主机上安装调试器。
    • 对于 Ubuntu 20.04 及以上版本,推荐使用:pip install -U debugpy
    • 如果你的旧项目还在使用老方案,可以安装:pip install ptvsd(这是旧版 VS Code 远程调试的常用库)。
  • 配置调试启动:有两种主流方式,可以根据你的习惯选择。
    • 方式 A:附加到已在运行的进程(推荐)
      1. 在远程的 Python 代码中(通常是入口文件或你需要打断点的模块顶部)插入以下代码:
        import debugpy
        debugpy.listen((“0.0.0.0”, 5678)) # 监听所有网络接口,端口号可自定义
        print(“Waiting for debugger attach…”)
        debugpy.wait_for_client() # 程序将在此阻塞,直到调试器连接
      2. 在本地 VS Code 项目中,创建或修改 .vscode/launch.json 文件,添加如下配置:
        {
            “version”: “0.2.0”,
            “configurations”: [{
                “name”: “Python: Remote Attach”,
                “type”: “python”,
                “request”: “attach”,
                “connect”: { “host”: “localhost”, “port”: 5678 },
                “pathMappings”: [{ “localRoot”: “${workspaceFolder}”, “remoteRoot”: “.” }]
            }]
        }
      3. 操作顺序:先在远程终端运行你的 Python 脚本,看到 “Waiting for debugger attach…” 提示后,再在 VS Code 中启动名为 “Python: Remote Attach” 的调试配置。
    • 方式 B:由 VS Code 直接启动并调试
      1. 在远程安装好 debugpy 后,在 VS Code 的 Python 解释器选择器中,切换到远程的 Python 环境。
      2. launch.json 中,使用 “request”: “launch” 的配置,指定程序入口文件和参数,必要时可以设置 “console”: “integratedTerminal”
  • 网络与权限
    • 如果 VS Code 和 Ubuntu 服务器不在同一台机器上,需要确保远程监听的端口(例如 5678)能够被本地访问到。对于云服务器,记得在安全组规则中放行该端口;内网环境则可以直接连接。
    • 在生产或多人协作环境下,强烈建议配置 SSH 密钥登录,避免反复输入密码,既安全又便捷。
  • 说明
    • 网上一些旧教程使用的 ptvsd,其配置思路和 debugpy 基本一致。但对于新项目,优先推荐使用 debugpy,它能获得更好的支持和性能。

方案二:Docker 容器中的远程调试

如果你的应用运行在 Docker 容器内,调试同样可以安排。思路是将容器视为一个微型远程主机。

  • 启动容器并映射端口与目录:运行容器时,需要映射 SSH 端口(例如 22)和你的代码目录。
    docker run --gpus all -it --name tf2 -p 1234:22 -v /home/you/project:/home/project tensorflow/tensorflow:latest-gpu /bin/bash
  • 容器内配置 SSH 服务:进入容器后,需要安装并启动 SSH 服务。
    • 更新包列表并安装:apt-get update && apt-get install -y openssh-server
    • 编辑 SSH 配置以允许 root 登录:vim /etc/ssh/sshd_config,设置 PermitRootLogin yes
    • 启动服务:service ssh start
    • 为 root 用户设置一个密码:passwd
  • VS Code 配置
    • 在 VS Code 的 SSH 配置文件中添加容器主机信息(示例):
      Host tf2
          HostName <服务器IP>
          Port 1234
          User root
    • 使用 Remote-SSH 连接这个名为 “tf2” 的主机,之后的选择远程解释器、创建调试会话等步骤,就完全和方案一一样了。只需确保端口映射和代码路径映射正确无误。

方案三:终端远程调试工具备选

对于没有图形界面的纯终端环境,或者需要快速排查的生产服务器,这些基于命令行的调试工具非常实用。

  • pudb(全屏终端可视化调试器,支持远程)
    • 安装:pip install pudb
    • 远程调试方法:
      • 在代码中设置断点:from pudb.remote import set_trace; set_trace(host=“0.0.0.0”, port=5555)
      • 在另一台机器的终端中使用:telnet <远程IP> 5555 进行连接和调试。
  • rpdb(基于 socket 的远程 pdb)
    • 安装:pip install rpdb
    • 远程调试方法:
      • 在代码中设置断点:import rpdb; rpdb.set_trace(addr=“0.0.0.0”, port=4444)
      • 使用 netcat 连接:nc <远程IP> 4444
  • 适用场景:这类工具特别适合在无图形界面的服务器上进行快速问题定位。当然,使用前务必记得在防火墙或安全组中开放对应的调试端口,并做好访问控制。

常见问题与排错要点

调试之路难免遇到小坎坷,以下几个关键点帮你快速排雷:

  • 端口连通性
    • 云服务器用户,请首先检查安全组规则是否放行了调试端口。一个简单的测试命令是:nc -vz <端口>
  • 路径映射
    • 在 VS Code 的 launch.json 中,pathMappings 配置至关重要。它建立了本地工作区与远程项目根目录的对应关系,如果配错,断点将无法命中。
  • 解释器选择
    • 使用 Remote-SSH 连接后,务必在 VS Code 的 Python 扩展中选择远程的 Python 解释器,否则依赖解析和调试环境会发生错位。
  • 旧版依赖
    • 如果项目仍在使用 ptvsd,建议逐步迁移到 debugpy。两者的附加(Attach)配置思路是相通的,迁移成本不高。
  • REPL 与交互
    • 通过 debugpy 附加调试时,本地的调试控制台并不会直接变成远程的 REPL。如果需要交互式命令行,可以打开 VS Code 的 Remote-SSH 集成终端,或者连接远程的 Jupyter 服务器来执行交互式代码。
来源:https://www.yisu.com/ask/96094853.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Ubuntu系统安装Java 8与Java 9环境详细教程
编程语言
Ubuntu系统安装Java 8与Java 9环境详细教程

在Ubuntu16 04系统中安装Java8和Java9。需注意Java9可能不完全向后兼容。安装均通过添加Webupd8PPA仓库、执行安装命令并同意许可协议完成。安装后需分别设置默认版本或环境变量,最后可通过`java-version`命令验证安装结果。

热心网友
05.07
LNMP环境MySQL数据库查询性能优化实战指南
数据库
LNMP环境MySQL数据库查询性能优化实战指南

LNMP环境中优化数据库查询需系统实施。关键步骤包括:根据业务选择存储引擎,优化表结构与字段类型,合理创建索引,编写高效SQL语句避免全表扫描。引入缓存层减轻数据库压力,使用连接池管理连接,必要时采用查询提示或分区表。定期维护数据库并监控慢查询,以实现持续性能提升。

热心网友
05.07
HBase数据恢复的完整流程与详细步骤解析
数据库
HBase数据恢复的完整流程与详细步骤解析

HBase数据恢复需按步骤进行:先确认集群状态并定位故障,操作前备份数据。恢复时可选用内置工具、快照、WAL回放或手动替换文件等方法。完成后验证数据完整性与集群健康,持续监控优化。注意版本兼容性,在业务低峰期操作,并建立定期备份策略。

热心网友
05.07
HBase数据备份的常用方法与最佳实践指南
数据库
HBase数据备份的常用方法与最佳实践指南

HBase数据备份主要有五种方法。使用自带工具可进行全量或增量备份。快照功能通过创建元数据引用实现快速备份与恢复。直接备份HDFS底层文件适合长期归档或迁移。第三方工具如DistCp和XtraBackup提供压缩、加密等增强功能。集群间复制机制支持实时同步,满足异地容灾需求。

热心网友
05.07
Apache2服务器优化数据库连接性能的实用方法
数据库
Apache2服务器优化数据库连接性能的实用方法

优化Apache2应用的数据库连接可提升性能,主要方法包括:使用持久连接或连接池复用连接以降低开销;限制并发连接数防止数据库过载;利用缓存减少查询;优化SQL语句与索引;调整数据库配置以适应负载;持续监控并动态调优,保障系统高效运行。

热心网友
05.07

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

Bitget交易所2026年发展前景与市场排名深度解析
web3.0
Bitget交易所2026年发展前景与市场排名深度解析

2026年,Bitget在交易所排行榜上展现出强劲的竞争力。其表现主要体现在用户资产安全体系的持续加固、多元化产品矩阵的成熟与创新,以及在合规与全球化布局上的显著进展。平台通过优化现货与衍生品交易体验,并深化Web3生态建设,巩固了其在行业中的领先地位,获得了市场与用户的广泛认可。

热心网友
05.07
NET开发中HttpClient使用避坑指南与最佳实践详解
编程语言
NET开发中HttpClient使用避坑指南与最佳实践详解

HttpClient的7个常见陷阱与规避指南 在 NET 生态里进行项目开发,HttpClient 几乎是调用外部 API 绕不开的一个工具。它的上手门槛很低,用起来很顺手,但恰恰是这份“简单”,让不少开发者放松了警惕。如果不清楚它内部的运作机制,一不小心就可能掉进坑里,轻则请求失败,重则引发服务

热心网友
05.07
NETCore与Linux服务器时间同步问题的多种解决方案详解
编程语言
NETCore与Linux服务器时间同步问题的多种解决方案详解

如何解决 NET Core项目与Linux服务器之间的时间同步问题 导语 搞分布式系统的开发者,多少都踩过时间不同步的“坑”。这事说大不大,说小不小——日志对不上、订单乱取消、交易出岔子,追根溯源,往往是几台机器的时间“各走各的”。尤其是在 NET Core应用遇上Linux服务器的场景,时区、格式

热心网友
05.07
NET 4.7 如何使用 NLog 将日志记录到数据库
编程语言
NET 4.7 如何使用 NLog 将日志记录到数据库

1 首先安装必要的NuGet包 第一步,咱们得把项目里需要的“砖瓦”——也就是那几个关键的NuGet包——给准备好。具体是下面这几个: NLog:日志记录的核心库。 NLog Config (可选):如果你想让配置文件自动生成,可以加上这个。 当然,别忘了根据你用的数据库类型,安装对应的提供程序。

热心网友
05.07
NETCore消息队列RabbitMQ实现方法与代码示例
编程语言
NETCore消息队列RabbitMQ实现方法与代码示例

在 NET Core 中玩转 RabbitMQ:从零搭建可靠的消息队列 消息队列是现代应用解耦和异步通信的基石,而 RabbitMQ 无疑是这个领域的明星选手。它基于 AMQP 协议,为不同应用程序间的可靠消息传递提供了强大支持。今天,我们就来深入聊聊,如何在 NET Core 环境中,亲手搭建

热心网友
05.07