如何通过pycharm远程调试linux实现远程代码的调试和开发

原文链接:
有时候Python应用的代码在本地开发环境运行十分正常,但是放到线上以后却出现了莫名其妙的异常,经过再三排查以后还是找不到问题原因,于是就在想,要是可以在服务器环境中进行单步跟踪调试就好了。
然而,在服务器系统上安装一个IDE肯定是不现实的;通过SSH远程到服务器端,采用pdb进行调试虽然可行,但是操作还是较为繁琐,而且也不够直观。
那么,是否可以将开发环境中的IDE与服务器环境相连,实现利用开发环境的IDE调试服务器环境中运行的程序呢? 答案是肯定的,这就是远程调试(Remote Debug)。
远程调试的工作原理
远程调试的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,实现原理都基本相同,这里采用PyCharm进行说明。
在远程调试的模式下,PyCharm(IDE)扮演服务端(Server)的角色,而运行在远程计算机上的应用程序扮演客户端(Client)的角色。正因如此,进行远程调试时,需要先在本地开发环境中设定端口并启动IDE,IDE会对设定的端口开始监听,等待客户端的连接请求;那远程计算机中的应用程序又是怎样与IDE建立通讯连接的呢?
针对远程调试功能,PyCharm提供了pydevd模块,该模块以pycharm-debug.egg的形式存在于PyCharm的安装路径中。远程计算机安装该库文件后,然后就可以调用pydevd.settrace方法,该方法会指定IDE所在机器的IP地址和监听的端口号,用于与IDE建立连接;建立连接后,便可在IDE中对远程在远程计算机中的程序进行单步调试。
远程调试的配置方法
1、在远程计算机上安装pydevd模块
首先,在本地开发环境的PyCharm安装路径中找到pycharm-debug.egg文件(若远程计算机运行的是Python3,则需要pycharm-debug-py3k.egg);
然后,将pycharm-debug.egg文件拷贝至远程计算机,在远程计算机中将pycharm-debug.egg添加至引用路径,可以采用多种方式:
采用easy_install pycharm-debug.egg命令进行安装(pip命令无法安装,只能使用easy_install)
将pycharm-debug.egg添加至PYTHONPATH或sys.path:& sys.path.append('/home/leo/app-dependancies/pycharm-debug.egg')
解压pycharm-debug.egg,将其中的pydev文件夹拷贝至远程应用程序目录下
最后,在远程计算机的Python命令行中输入import pydevd,若没有报错则说明pydevd模块安装成功。
2、在本地开发环境的PyCharm中进行监听配置
在PyCharm中配置说明如下:
【Run】-&【Edit Configurations】
【Add New Configuration】-&【Python Remote Debug】
填写Local host name和Port,其中Local host name指的是本机开发环境的IP地址,而Port则随便填写一个10000以上的即可;需要注意的是,由于远程计算机需要连接至本地开发环境,因此本地IP地址应该保证远程可以访问得到
【Apply】and【OK】
3、在本地开发环境的PyCharm中配置Mapping映射
4、在远程计算机的应用程序中插入代码
将如下代码插入至远程计算机的应用程序中。
import pydevd
pydevd.settrace('100.84.48.156', port=31235, stdoutToServer=True, stderrToServer=True)
其中,IP地址和端口号要与PyCharm中的监听配置保持一致。
5、在PyCharm中启动Debug Server
【Run】-&【Debug…】,选择刚创建的远程调试配置项,在Debug Console中会显示如下信息:
Starting debug server at port 31235
Waiting for process connection...
Use the following code to connect to the debugger:
import pydevd
pydevd.settrace('100.84.48.156', port=31235, stdoutToServer=True, stderrToServer=True)
这说明Debug Server已经启动并处于监听状态。
6、在远程计算机中启动应用程序
在远程计算机中启动应用程序,当执行到pydevd.settrace语句时,便会与本地开发环境中的PyCharm建立通讯连接,接下来便可以在本地IDE中进行单步调试了。
需要注意的是,本地开发环境必须保证IP地址和端口号可从远程计算机访问得到,否则会无法建立连接。
$ telnet 100.84.48.156 31235
Trying 100.84.48.156...
telnet: Unable to connect to remote host: Connection refused
$ python devicedectector.py
Could not connect to 100.84.48.156: 31236
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/pycharm-debug.egg/pydevd_comm.py", line 478, in StartClient
s.connect((host, port))
File "/usr/lib/python2.7/socket.py", line 224, in meth
return getattr(self._sock,name)(*args)
error: [Errno 111] Connection refused
阅读(...) 评论()
我所有的自负都来自我的自卑,所有的英雄气概都来自我内心的软弱,所有的振振有词都因为心中充满疑惑。我假装无情,其实是痛恨自己的深情。我以为人生的意义在于四处漂泊,其实只是掩饰至今没有找到愿意驻足的地方。使用PyCharm进行远程开发和调试 - CSDN博客
使用PyCharm进行远程开发和调试
使用PyCharm进行远程开发和调试
你是否经常要在Windows 7或MAC OS X上面开发Python或Web应用程序,但是它们最后需要在linux上面来运行呢? 我们经常会碰到开发时没有问题但是到了正式的Linux环境下面却出现问题。那么怎样保证开发环境跟运行环境的一致呢?
通常有两种方法解决。一种是使用PyCharm内置支持的Vagrant,这个教程可以参考。
不过很遗憾的是我自己在试验过程中启动VirtualBox虚拟机时候老是报错,暂时还没解决,读者可以自己试着测试看行不行。 第二种方式就是通过PyCharm的远程解释器加上文件同步功能,实现本地编辑代码-&同步到服务器-&通过远程debug来调试测试程序。目前我选择的是第二种,虽然比第一种更笨拙点。
远程调试的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,实现原理都基本相同,这里采用PyCharm进行说明。
远程服务器的同步配置
远程服务器IP地址192.168.203.95,开启ssh服务,安装python版本2.7。我用一个在PyCharm里面的core-python项目来做演示。
首先我们需要配置PyCharm通服务器的代码同步,打开Tools | Deployment | Configuration
点击左边的“+”添加一个部署配置,输入名字,类型选SFTP
确定之后,再配置远程服务器的ip、端口、用户名和密码。root path是文件上传的根目录,注意这个目录必须用户名有权限创建文件。
然后配置映射,local path是你的工程目录,就是需要将本地这个目录同步到服务器上面,我填的是项目根目录。 Deploy path on server 这里填写相对于root path的目录,下面那个web path不用管先
如果你还有一些文件或文件夹不想同步,那么在配置对话框的第三个tab页“Excluded path”里面添加即可,可同时指定本地和远程。
还有一个设置,打开Tools | Deployment | Options,将”Create Empty directories”打上勾,要是指定的文件夹不存在,会自动创建。
上传和下载文件
有几种方法可以实现本地和远程文件的同步,手动和当文件保存后自动触发。这里我选择了手动,因为自动触发比如影响性能,PyCharm会卡,感觉不爽。
手动上传方式很简单,选择需要同步的文件或文件夹,然后选择 Tools | Deployment | Upload to sftp(这个是刚刚配置的部署名称)
下载文件也是一样,选择 Tools | Deployment | Download from sftp
比较远程和本地文件
有时候你并不确定远程和本地版本的完全一致,需要去比较看看。PyCharm提供了对比视图来为你解决这个问题。
选择Tools | Deployment | Browse Remote Host,打开远程文件视图,在右侧窗口就能看到远程主机中的文件
选择一个你想要对比的文件夹,点击右键-&Sync with Local,打开同步对比窗口,使用左右箭头来同步内容。
上面是服务器与本地对比,那么本地文件通服务器对比,就先在PyCharm里面选择文件或文件夹,然后右键-&Deployment-&Sync with deployed to即可
PyCharm远程调试
在PyCharm中进行远程调试有两种选择:
使用远程的解释器使用Python调试服务器
这里简单起见我只演示第一种,使用远程解释器,也就是使用服务器上面安装的python解释器。
配置远程Python解释器
选择File | Settings,选择Project | Project Interpreter,然后在右边,点击那个小齿轮设置,如下
然后点击”Add Remote”,填写主机的ssh配置
如果之前配置过SFTP的话就直接选“Deployment configuration”,然后选择刚刚的模板名称就可以了,由于我上面配置过就直接选模板, 这里请仔细看我的Python解释器是虚拟环境virtualenv,这个要在服务器上面先创建好虚拟环境。
完成之后选择这个远程的解释器作为工程的解释器即可,然后配置一个运行实例,打断点调试。 这里我以另外一个django工程为例来说明,名字为zspace,因为用一个web工程来说明更具代表性。
选择“Run/Debug Configuration”,添加一个“Django server”,然后配置像下面这样写请注意图中标出的几个点,具体什么意思就不用多解释了吧,^_^
然后你就可以像本地调试一样打断点做调试了。这个步骤太简单就不截图了,记得修改源码后同步到服务器继续下一次的调试。
本文已收录于以下专栏:
相关文章推荐
http://blog.csdn.net/pipisorry/article/details/PyCharm提供两种远程调试(Remote Debugging)的方式:    配置远程...
为了提高配置的成功率本文使用的是Liunx端的root账户
好了废话不多说,直接上教程!
一、远程开发
1、配置Deployment
      打开Pycharm软件,依次点击Configu...
上一篇文章总结了Keras的基本使用方法,相信用过的同学都会觉得不可思议,太简洁了。十多天前,我在github上发现这个框架的时候,关注Keras的人还比较少,这两天无论是github还是微薄,都看到...
http://blog.csdn.net/pipisorry/article/details/python虚拟环境virtualenvVirtualEnv用于在一台机器上创建多个独立的...
Python远程调试
Python远程调试,即在远程机器上运行python代码,在本地进行调试。
需要环境:python  http://www.python.org/getit/
远程调试分为两个步骤,第一步需要将远程代码与本地代码进行关联,具体参考课的文档如下
菜单-&Tools-&Deployment-&Configuration
打开configuration后如下...
http://blog.csdn.net/duankaifei/article/details/
1、写在前面
    之前一致用putty,ssh,修改代码,或者本地修改,上...
在机房中,服务器通过ADB与多台Android设备相连接,并通过Python应用程序(QMSInterceptor)对Android设备进行任务调度。
在开发环境中对QMSInterc...
环境:windows7、pycharm3.4.1、centos6.5(部署openstack icehource版)
1、在windows机器安装pycharm
将windows pycha...
使用PyCharm进行远程开发和调试
你是否经常要在Windows 7或MAC OS X上面开发Python或Web应用程序,但是它们最后需要在linux上面来运行呢? 我们经常会碰到开发时...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)下次自动登录
现在的位置:
& 综合 & 正文
Pycharm的远程代码编辑
作为一个从java转到python的程序猿,一直觉得python的远程代码调试能力不如java,远程调试一把需要各种改代码,牵扯到eventlet库的时候,问题就更严重,需要调整eventlet的各种配置,算了还是不用远程调试了,太麻烦。
返璞归真,直接用日志输出打出想要的变量,但是改了本地代码,再上传到服务器运行调试,流程也不够便利,没办法本人太懒。
后来发现Pycharm本身就提供了一个Deployment工具,可以直接整合上述流程,将本地代码和服务器代码做一个映射,然后修改本地代码时,自动或手动上传服务器同步,然后通过Pycharm的SSH Terminal重启进程验证。
好了,废话少说,来看看怎么配置:
1、菜单-&Tools-&Deployment-&Configuration
2、添加需要连接的服务器,填入ip,用户名和密码,我用的是SFTP协议
3、配置代码映射,例如将本地的keystone代码,映射到环境上的keystone安装目录/usr/lib64/python2.6/site-packages/keystone
4、配置自动上传修改的文件
菜单-&Tools-&Deployment-&Options,将“Upload changed files automatically to the default server”改为 “On explicit save action”,然后你每次Ctrl+s的时候,修改的代码就自动上传了
5、运行SSH Terminal,Deployment配置好之后,直接运行SSH Terminal,就可以在Pycharm中,开一个SSH终端,直接重启进程、看日志啥的,很方便
&&&&推荐文章:
【上篇】【下篇】  这篇文章主要介绍了python使用PyCharm进行远程开发和调试,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧。  背景描述  有时候Python应用的代码在本地开发环境运行十分正常,但是放到线上以后却出现了莫名其妙的异常,经过再三排查以后还是找不到问题原因,于是就在想,要是可以在服务器环境中进行单步跟踪调试就好了。  然而,在服务器系统上安装一个IDE肯定是不现实的;通过SSH远程到服务器端,采用pdb进行调试虽然可行,但是操作还是较为繁琐,而且也不够直观。  那么,是否可以将开发环境中的IDE与服务器环境相连,实现利用开发环境的IDE调试服务器环境中运行的程序呢? 答案是肯定的,这就是远程调试(Remote
Debug)。  远程调试的工作原理  远程调试的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,实现原理都基本相同,这里采用PyCharm进行说明。  在远程调试的模式下,PyCharm(IDE)扮演服务端(Server)的角色,而运行在远程计算机上的应用程序扮演客户端(Client)的角色。正因如此,进行远程调试时,需要先在本地开发环境中设定端口并启动IDE,IDE会对设定的端口开始监听,等待客户端的连接请求;那远程计算机中的应用程序又是怎样与IDE建立通讯连接的呢?  针对远程调试功能,PyCharm提供了pydevd模块,该模块以pycharm-debug.egg的形式存在于PyCharm的安装路径中。远程计算机安装该库文件后,然后就可以调用pydevd.settrace方法,该方法会指定IDE所在机器的IP地址和监听的端口号,用于与IDE建立连接;建立连接后,便可在IDE中对远程在远程计算机中的程序进行单步调试。  使用PyCharm进行远程开发和调试  你是否经常要在Windows 7或MAC OS X上面开发Python或Web应用程序,但是它们最后需要在linux上面来运行呢?
我们经常会碰到开发时没有问题但是到了正式的Linux环境下面却出现问题。那么怎样保证开发环境跟运行环境的一致呢?  通常有两种方法解决。一种是使用PyCharm内置支持的Vagrant,这个教程可以参考Vagrant开发环境配置。
不过很遗憾的是我自己在试验过程中启动VirtualBox虚拟机时候老是报错,暂时还没解决,读者可以自己试着测试看行不行。
第二种方式就是通过PyCharm的远程解释器加上文件同步功能,实现本地编辑代码-&同步到服务器-&通过远程debug来调试测试程序。目前我选择的是第二种,虽然比第一种更笨拙点。  远程调试的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,实现原理都基本相同,这里采用PyCharm进行说明。  远程服务器的同步配置  远程服务器IP地址192.168.203.95,开启ssh服务,安装python版本2.7。我用一个在PyCharm里面的core-python项目来做演示。  首先我们需要配置PyCharm通服务器的代码同步,打开Tools | Deployment | Configuration  点击左边的“+”添加一个部署配置,输入名字,类型选SFTP  确定之后,再配置远程服务器的ip、端口、用户名和密码。root path是文件上传的根目录,注意这个目录必须用户名有权限创建文件。  然后配置映射,local path是你的工程目录,就是需要将本地这个目录同步到服务器上面,我填的是项目根目录。 Deploy path on
server 这里填写相对于root path的目录,下面那个web path不用管先  如果你还有一些文件或文件夹不想同步,那么在配置对话框的第三个tab页“Excluded path”里面添加即可,可同时指定本地和远程。  还有一个设置,打开Tools | Deployment | Options,将”Create Empty
directories”打上勾,要是指定的文件夹不存在,会自动创建。  上传和下载文件  有几种方法可以实现本地和远程文件的同步,手动和当文件保存后自动触发。这里我选择了手动,因为自动触发比如影响性能,PyCharm会卡,感觉不爽。  手动上传方式很简单,选择需要同步的文件或文件夹,然后选择 Tools | Deployment | Upload to
sftp(这个是刚刚配置的部署名称)  下载文件也是一样,选择 Tools | Deployment | Download from sftp  比较远程和本地文件  有时候你并不确定远程和本地版本的完全一致,需要去比较看看。PyCharm提供了对比视图来为你解决这个问题。  选择Tools | Deployment | Browse Remote Host,打开远程文件视图,在右侧窗口就能看到远程主机中的文件  选择一个你想要对比的文件夹,点击右键-&Sync with Local,打开同步对比窗口,使用左右箭头来同步内容。  上面是服务器与本地对比,那么本地文件通服务器对比,就先在PyCharm里面选择文件或文件夹,然后右键-&Deployment-&Sync
with deployed to即可  PyCharm远程调试  在PyCharm中进行远程调试有两种选择:  使用远程的解释器  使用Python调试服务器  这里简单起见我只演示第一种,使用远程解释器,也就是使用服务器上面安装的python解释器。  配置远程Python解释器  选择File | Settings,选择Project | Project Interpreter,然后在右边,点击那个小齿轮设置,如下  然后点击”Add Remote”,填写主机的ssh配置  如果之前配置过SFTP的话就直接选“Deployment configuration”,然后选择刚刚的模板名称就可以了,由于我上面配置过就直接选模板,
这里请仔细看我的Python解释器是虚拟环境virtualenv,这个要在服务器上面先创建好虚拟环境。  开始调试  完成之后选择这个远程的解释器作为工程的解释器即可,然后配置一个运行实例,打断点调试。
这里我以另外一个django工程为例来说明,名字为zspace,因为用一个web工程来说明更具代表性。  选择“Run/Debug Configuration”,添加一个“Django server”,然后配置像下面这样写  请注意图中标出的几个点,具体什么意思就不用多解释了吧,^_^  然后你就可以像本地调试一样打断点做调试了。这个步骤太简单就不截图了,记得修改源码后同步到服务器继续下一次的调试。  以上就是本文的全部内容,希望对大家的学习有所帮助

我要回帖

更多关于 pycharm 调试远程代码 的文章

 

随机推荐