使用 PyCharm 进行远程调试
最后修改时间:2023 年 10 月 18 日借助 PyCharm,您可以使用位于另一台计算机(例如 Web 服务器或专用测试机)上的解释器来调试应用程序。
PyCharm 提供了两种远程调试方式:
案例:使用此方法可以利用远程计算机上可用的扩展调试功能。
要求:从本地计算机到远程服务器的 SSH 访问。
使用Python远程调试服务器配置。
案例:使用这种方式将调试过程集成到远程服务器上的一系列运行过程中。当您无法显式运行应用程序进行调试或需要进行一些准备时,这可能会很有帮助。
需求:从本地机器到远程服务器的SSH访问,从远程服务器使用任何预定义端口访问本地机器。
在你开始之前
完成以下准备工作:
将 Python 文件添加到此项目 ( -Python File )。AltInsert
将以下代码添加到Python 文件中:
import math class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(result)
为远程解释器创建部署配置
在此示例中,运行应用程序的计算机被引用为local,具有远程解释器的计算机被引用为remote。
配置远程解释器
确保您可以通过 SSH 访问远程计算机。
将新的远程解释器添加到项目中,如使用 SSH 配置解释器中所述,指定连接到远程计算机的凭据。
为项目创建远程解释器后,就会创建相应的部署配置。要预览它,请按打开本地计算机上的“设置”对话框窗口,然后单击“构建”、“执行”、“部署”节点和“部署”节点。CtrlAlt0S
您可以接受所有默认设置或根据需要更改它们。对于此示例,我们为您的部署配置使用一个有意义的名称,例如“MySFTPConnection”。
确保根路径值反映在创建的 SSH 解释器的相应设置中指定的路径。
检查项目中的路径解释器| Python 解释器设置,展开项目 |中可用解释器的列表。Python 解释器,选择显示全部...,然后单击。所选解释器的现有路径显示在“解释器路径”对话框中。
现在您的部署配置已准备就绪。
将您的应用程序部署到远程主机
接下来,您的应用程序必须部署到远程主机。
在“工具”菜单上,选择“部署”|“部署”。上传到 MySFTPConnection。
出现文件传输工具窗口。验证传输的文件数量。
调试您的应用程序
右键单击编辑器背景并选择“调试 <名称>”(此处为“调试 'quadratic_equation'”)。
查看调试输出。请注意,调试实际上是在指定的远程服务器上进行的。
使用Python远程调试服务器配置进行远程调试
您还可以使用专用的运行/调试配置启用远程调试,即运行/调试配置:Python 调试服务器。
创建运行/调试配置
转到“运行”| 编辑配置.... 将打开“运行/调试配置”对话框。您必须单击工具栏上的 ,然后从可用配置列表中选择Python 调试服务器。
输入此运行/调试配置的名称 - 让它成为MyRemoteServer。指定运行 IDE 的计算机的端口号(此处为12345)和IDE 主机名(此处为172.20.208.95 )。远程调试服务器将使用这些参数来访问它。
将本地计算机上的路径映射到远程计算机上的路径:
检查更新您的脚本说明。您可以使用PyCharm 安装中的pydevd-pycharm.egg ( <PyCharm directory>
/debug-egg ) 或/pydevd-pycharm.egg pydevd-pycharm
使用 pip 安装包。根据您的选择,执行以下更改:
使用 pip 安装从安装目录添加pydevd-pycharm
通过运行以下命令在远程计算机上安装软件包:pip install pydevd-pycharm~=<version of PyCharm on the local machine>
例如,
pip install pydevd-pycharm~=191.3490)
修改源代码文件如下:
import math #==============this code added==================================================================: import pydevd_pycharm pydevd_pycharm.settrace('172.20.208.95', port=12345, stdoutToServer=True, stderrToServer=True) #================================================================================================ class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(result)
修改代码如下:
import math #==============this code added==================================================================: import sys sys.path.append("<PyCharm directory>/debug-egg/pydevd-pycharm.egg") import pydevd_pycharm pydevd_pycharm.settrace('172.20.208.95', port=12345, stdoutToServer=True, stderrToServer=True) #================================================================================================ class Solver: def demo(self, a, b, c): d = b ** 2 - 4 * a * c if d > 0: disc = math.sqrt(d) root1 = (-b + disc) / (2 * a) root2 = (-b - disc) / (2 * a) return root1, root2 elif d == 0: return -b / (2 * a) else: return "This equation has no roots" if __name__ == '__main__': solver = Solver() while True: a = int(input("a: ")) b = int(input("b: ")) c = int(input("c: ")) result = solver.demo(a, b, c) print(result)
创建 SFTP 连接
在远程计算机上,创建一个应上传文件quadratic_equation.py 的目录。您可以在终端窗口中执行此操作:
$cd /tmp $mkdir pycharm_project_986
在本地计算机上,创建连接配置文件。转到工具| 部署-配置.... 在打开的对话框中,单击,然后在“添加服务器”对话框中选择连接类型(此处为 SFTP)并输入其名称(此处为MySFTPConnection)。
在“连接”选项卡中,指定该计算机的 SFTP 主机(远程计算机的地址)、用户名和密码。
请注意,指定的用户应该具有对远程主机的 SSH 访问权限。
单击“映射”选项卡,然后输入服务器中的部署路径。服务器是
MySFTPConnection
,因此单击浏览按钮并选择所需的文件夹/tmp /pycharm_project_986。请注意,浏览按钮显示远程主机的内容。应用更改并关闭对话框。
将文件部署到远程机器
将以下文件部署到远程计算机:pydevd-pycharm.egg和quadratic_equation.py。
在本地计算机上的“项目”工具窗口中,选择文件,右键单击所选内容并选择“部署”|“ 上传到 MySFTPConnection。
检查文件传输对话框窗口以确保本地计算机中的文件已上传到远程服务器。
启动调试服务器
选择创建的运行/调试配置,然后单击:
确保“调试”窗口显示“正在等待进程连接...”消息。该消息将一直显示,直到您在远程计算机上启动脚本,并且该脚本将连接到调试服务器。
在远程机器上执行Python文件
在远程计算机上,导航到tmp/pycharm_project_986目录。
在远程主机上启动quadratic_equation.py文件。为此,请在终端窗口中输入以下命令:
蟒蛇3蟒蛇2$python3 quadratic_equation.py
$python quadratic_equation.py
这种调试方法最有用的方面是,当远程调试是计划任务的一部分或者当您需要在运行 Python 脚本之前执行一些准备步骤时,您可以使用任何bash脚本来运行 Python 文件。如果是这种情况,请将以下行添加到 bash 脚本的适当位置:
蟒蛇3蟒蛇2cd /tmp/pycharm_project_986 python3 quadratic_equation.py
cd /tmp/pycharm_project_986 python quadratic_equation.py
调试您的应用程序
在本地计算机上,切换到“调试”窗口。它应该显示与 pydev 调试器的连接。
您的代码实际上是在远程主机上执行,但在本地计算机上进行调试。
概括
为了使用远程解释器进行调试,您必须通过 PyCharm 启动程序,但这并不总是可行。另一方面,当使用调试服务器时,您可以连接到正在运行的进程。
比较这两种方法。
在第一种情况下,我们
在第二种情况下,我们
创建了调试配置(调试服务器)。
在远程机器上执行Python脚本。该脚本连接到调试服务器。
在本地计算机上调试脚本。
感谢您的反馈意见!