跳到主要内容

PyCharm 远程调试代码

注意

PyCharm 社区版不能远程调试,社区版用户请略过本章节

远程代码调试适用场景

  • 模块功能无法在本地环境测试,例如:比如涉及服务器集群内部资源访问、支付模块等需要内网或服务器认证的功能功能模块
  • 本地设备算力有限,需要使用服务器算力
  • 项目太多本地不想部署太多开发测试环境,需要用服务器运行环境
  • 临时给他人调试代码
  • 等等~~

PyCharm 专业版 集成了远程项目调试功能,下边就介绍一下使用方法 。

配置远程连接

注意

前提是远程服务可以通过 ssh 连接,密钥登陆、密码登陆都可以,如果服务器有白名单限制要先解除或添加白名单。

# 查看 ssh 是否启动(sshd 说明已启动)
$ ps -e |grep ssh
# 若没有启动可通过下面这条命令开启
$ service ssh start
# 若没有安装 ssh, 可通过以下命令安装
$ sudo apt-get update
$ sudo apt-get install openssh-server

本地新建一个项目

Pycharm 中新建一个项目用作存放远程代码。项目名称随意自定义。

Tools -> Deployment -> configuration

提示

新建项目只是为了存放远程项目代码并不是必须,只要有一个存放远程项目代码的地方即可

添加远程连接

创建远程连接服务

参数说明:

  • Name:填写远程 IP

  • Type:选择 SFTP

提示

PyCharm 版本不同页面操作有稍微差异,根据指示操作即可,本教程 PyCharm 版本: PyCharm 2022.2

点击 OK 后,进入连接信息填写界面,如下图:

远程连接配置

Connection (连接配置)

参数说明:

  • SFTP host:公网ip
  • Port:服务器开放的 ssh 端口
  • Root path:远程目录(项目的具体路径或项目根路径都可以,这里配置的路径直接影响下边 Mappings -> Deployment path 路径配置)
  • Username:登陆服务器所用的用户名
  • Auth type:登陆类型,若用密码登陆的就是Password
  • Password:选密码登陆后,这边输入你的登陆密码,可以选择保存密码。
  • Web server root URL:如果远程项目可以通过 http 下载,也可以通过 http 下载,一般不会允许

填写完成后,切换到 Mappings 选项卡,在箭头位置,填写 /

Mappings (项目映射配置)

参数说明:

  • Local path:本地新建的项目的路径
  • Deployment path:需要调试项目的相对路径,相对于 Connection -> Root path 路径
  • Web path:需要调试项目的相对路径,相对于 Connection -> Web server root URL

以上服务器信息配置,全部正确填写完成后,点击OK

接下来,我们要连接远程服务器了。 Tools -> Deployment -> Browse Remote Host

下载项目代码

选择下载远程代码要本地。

下载完成提示。

现在的IDE界面应该是这样子的。

4. 下载远程解释器

为什么需要这步呢?

远程调试是在远端的服务器上运行的,它除了依赖其他组件之外,还会有一些很多Python依赖包我们本地并没有。

进入 File -> Settings 按图示,添加远程解释器。

填写远程服务器信息,跟之前的一样,不再赘述。

点击OK后,会自动下载远程解释器。如果你的项目比较大,这个时间可能会比较久,请耐心等待。

5. 添加程序入口

因为我们要在本地DEBUG,所以你一定要知道你的项目的入口程序。如果这个入口程序已经包含在你的项目代码中,那么请略过这一步。

如果没有,就请自己生成入口程序。

比如,我这边的项目,在服务器上是以一个服务运行的。而我们都知道服务的入口是Service文件cat /usr/lib/systemd/system/openstack-nova-compute.service

[Unit]
Description=OpenStack Nova Compute Server
After=syslog.target network.target libvirtd.service

[Service]
Environment=LIBGUESTFS_ATTACH_METHOD=appliance
Type=notify
NotifyAccess=all
TimeoutStartSec=0
Restart=always
User=nova
ExecStart=/usr/bin/nova-compute

[Install]
WantedBy=multi-user.target

看到那个ExecStart没有?那个就是我们程序的入口。 我们只要将其拷贝至我们的Pycharm中,并向远程同步该文件。

6. 调试前设置

开启代码自动同步,这样,我们对代码的修改Pycharm都能识别,并且为我们提交到远程服务器。

开启 Gevent compatible,如果不开启,在调试过程中,很可能出现无法调试,或者无法追踪/查看变量等问题。

7. 开始调试代码

在你的程序入口文件处,点击右键,选择Debug即可。

如果你的程序入口,需要引入参数,这是经常有的事,可以的这里配置。

配置完点击保存即可。

8. 友情提醒

按照文章的试调试代码,会自动同步代码至远端,千万不要在生产环境使用,一定要在开发环境中使用,否则后果自负。

调试工具给了程序员提供了很大的便利,但还是希望你不要过度依赖。尽量在每次写代码的时候,都追求一次成型,提高自己的编码能力。