简介
本文将介绍如何使用PyCharm进行远程调试Python代码。
准备
- PyCharm
- 远程环境,本例中为linux系统
方法一:使用远程解释器调试
准备代码
以下为需要远程调试的代码demo.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14#!/usr/bin/python
# -*- coding:utf-8 -*-
import socket
def hello_world(name="world!"):
print("hello " + name)
hostname = socket.gethostname()
print(hostname)
if __name__ == "__main__":
hello_world()PyCharm连接到远程环境
点击【Tools】-【Deployment】-【Configuration】点“+”加号,新增一个sftp配置
填写host, port, User name, Password等信息,填写好后可以点击
Test SFTP connection...
来测试配置是否正确。可以点击Autodetect
自动填写Root path,或者手动配置点击【Mappings】来配置远程服务器目录和本地目录映射关系,填写Local path, Deployment path on server,也可以点击右侧
...
来手动选择目录。注意,Deployment path on server填写的是以Root path为根目录的相对路径,可以在【Excluded Paths】中填写需要被排除同步的文件或文件夹,点击OK保存配置上传代码至远程服务器
在需要上传的代码或文件夹上点击右键-【Deployment】-【Upload to …】,即可将代码上传至远程服务器可以点击【Tools】-【Deployment】-【Browse Remote Host】查看远程服务器
Root path
下的目录结构配置远程解释器
点击【settings】-【Project Interpreter】-【右上方小齿轮】-【add】点击【SSH Interpreter】-【Existing server configuration】,然后选择move,下一步
填写Interpreter(远程服务器Python解释器路径),以及Sync folders(本地目录和远程目录的映射关系),点击Finish完成
开始调试或运行
在保证远程Python解释器环境安装了工程所需的依赖包后,开始调试或者运行即可
方法二:使用pycharm-debug包调试
准备代码
以下为需要远程调试的代码demo.py
,将代码上传至远程服务器上1
2
3
4
5
6
7
8
9
10
11
12
13
14#!/usr/bin/python
# -*- coding:utf-8 -*-
import socket
def hello_world(name="world!"):
print("hello " + name)
hostname = socket.gethostname()
print(socket.gethostname())
if __name__ == "__main__":
hello_world()远程服务器上安装
pytharm-debug.egg
(Python2.x适用)或pycharm-debug-py3k.egg
(Python3.x适用)
安装包位于pycharm安装目中的debug-eggs
目录中,将需要的安装包上传至远程服务器上,使用如下命令安装依赖包:1
easy_install pycharm-debug.egg
在本地pycharm中新建远程调试配置
新建
Python Remote Debug
填写本地ip,端口(本地启动调试服务的端口,不和已有端口冲突即可),远程和本地目录映射关系(此处可以不配置,调试启动是选择Download远程代码也可以)
修改远程需要调试的代码
将如下代码添加至远程需要被调试的代码中,添加至需要开始调试的地方
1
2import pydevd
pydevd.settrace('10.60.84.78', port=6666, stdoutToServer=True, stderrToServer=True)例如:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#!/usr/bin/python
# -*- coding:utf-8 -*-
import socket
import pydevd
def hello_world(name="world!"):
print("hello " + name)
pydevd.settrace('10.60.84.78', port=6666, stdoutToServer=True, stderrToServer=True)
hostname = socket.gethostname()
print(hostname)
if __name__ == "__main__":
hello_world()远程代码启动
1
python demo.py
启动后,运行至
pydevd.settrace(...
处会等待pycharm启动debugPyCharm启动Remote Debug
此时若没有配置目录映射,则会提示如下信息:
选择Download可以下载远程代码,也可以配置目录映射
之后可进入到开始调试了的入口,可以开始调试啦