使用PyCharm进行远程开发和调试的实现


Posted in Python onNovember 04, 2019

你是否经常要在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

使用PyCharm进行远程开发和调试的实现

确定之后,再配置远程服务器的ip、端口、用户名和密码。root path是文件上传的根目录,注意这个目录必须用户名有权限创建文件。

使用PyCharm进行远程开发和调试的实现

然后配置映射,local path是你的工程目录,就是需要将本地这个目录同步到服务器上面,我填的是项目根目录。 Deploy path on server 这里填写相对于root path的目录,下面那个web path不用管先

使用PyCharm进行远程开发和调试的实现

如果你还有一些文件或文件夹不想同步,那么在配置对话框的第三个tab页“Excluded path”里面添加即可,可同时指定本地和远程。

还有一个设置,打开Tools | Deployment | Options,将”Create Empty directories”打上勾,要是指定的文件夹不存在,会自动创建。

上传和下载文件

有几种方法可以实现本地和远程文件的同步,手动和当文件保存后自动触发。这里我选择了手动,因为自动触发比如影响性能,PyCharm会卡,感觉不爽。

手动上传方式很简单,选择需要同步的文件或文件夹,然后选择 Tools | Deployment | Upload to sftp(这个是刚刚配置的部署名称)

使用PyCharm进行远程开发和调试的实现

下载文件也是一样,选择 Tools | Deployment | Download from sftp

比较远程和本地文件

有时候你并不确定远程和本地版本的完全一致,需要去比较看看。PyCharm提供了对比视图来为你解决这个问题。

选择Tools | Deployment | Browse Remote Host,打开远程文件视图,在右侧窗口就能看到远程主机中的文件

使用PyCharm进行远程开发和调试的实现

选择一个你想要对比的文件夹,点击右键->Sync with Local,打开同步对比窗口,使用左右箭头来同步内容。

上面是服务器与本地对比,那么本地文件通服务器对比,就先在PyCharm里面选择文件或文件夹,然后右键->Deployment->Sync with deployed to即可

PyCharm远程调试

在PyCharm中进行远程调试有两种选择:

  1. 使用远程的解释器
  2. 使用Python调试服务器

这里简单起见我只演示第一种,使用远程解释器,也就是使用服务器上面安装的python解释器。

配置远程Python解释器

选择File | Settings,选择Project | Project Interpreter,然后在右边,点击那个小齿轮设置,如下

使用PyCharm进行远程开发和调试的实现

然后点击”Add Remote”,填写主机的ssh配置

使用PyCharm进行远程开发和调试的实现

如果之前配置过SFTP的话就直接选“Deployment configuration”,然后选择刚刚的模板名称就可以了,由于我上面配置过就直接选模板, 这里请仔细看我的Python解释器是虚拟环境virtualenv,这个要在服务器上面先创建好虚拟环境。

开始调试

完成之后选择这个远程的解释器作为工程的解释器即可,然后配置一个运行实例,打断点调试。 这里我以另外一个django工程为例来说明,名字为zspace,因为用一个web工程来说明更具代表性。

选择“Run/Debug Configuration”,添加一个“Django server”,然后配置像下面这样写 请注意图中标出的几个点,具体什么意思就不用多解释了吧,^_^

使用PyCharm进行远程开发和调试的实现

然后你就可以像本地调试一样打断点做调试了。这个步骤太简单就不截图了,记得修改源码后同步到服务器继续下一次的调试。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python设置windows桌面壁纸的实现代码
Jan 28 Python
python遍历 truple list dictionary的几种方法总结
Sep 11 Python
详解TensorFlow在windows上安装与简单示例
Mar 05 Python
更换Django默认的模板引擎为jinja2的实现方法
May 28 Python
mac下如何将python2.7改为python3
Jul 13 Python
利用django+wechat-python-sdk 创建微信服务器接入的方法
Feb 20 Python
python Pandas库基础分析之时间序列的处理详解
Jul 13 Python
python的常见矩阵运算(小结)
Aug 07 Python
Python使用python-docx读写word文档
Aug 26 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
Python批量修改xml的坐标值全部转为整数的实例代码
Nov 26 Python
pycharm 配置svn的图文教程(手把手教你)
Jan 15 Python
python框架django项目部署相关知识详解
Nov 04 #Python
python tkinter控件布局项目实例
Nov 04 #Python
python requests抓取one推送文字和图片代码实例
Nov 04 #Python
python 五子棋如何获得鼠标点击坐标
Nov 04 #Python
Pandas 缺失数据处理的实现
Nov 04 #Python
python tkinter canvas使用实例
Nov 04 #Python
python matplotlib饼状图参数及用法解析
Nov 04 #Python
You might like
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
2013/07/05 PHP
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
JavaScript 定义function的三种方式小结
2009/10/16 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
2013/04/08 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
bootstrap table配置参数例子
2017/01/05 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
分享十三个最佳JavaScript数据网格库
2017/04/07 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
vue实现登陆登出的实现示例
2017/09/15 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
微信小程序登录换取token的教程
2018/05/31 Javascript
express启用https使用小记
2019/05/21 Javascript
解决vue+elementui项目打包后样式变化问题
2020/08/03 Javascript
Python中不同进制互相转换(二进制、八进制、十进制和十六进制)
2015/04/05 Python
基于python脚本实现软件的注册功能(机器码+注册码机制)
2016/10/09 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
Python 3.3实现计算两个日期间隔秒数/天数的方法示例
2019/01/07 Python
python with (as)语句实例详解
2020/02/04 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
iRobot官网:改变生活的家用机器人品牌
2016/09/20 全球购物
歌唱比赛获奖感言
2014/01/21 职场文书
十佳美德少年事迹材料
2014/02/05 职场文书
小学一年级学生评语
2014/04/22 职场文书
数控机床专业自荐信
2014/05/19 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
2015应届毕业生自荐信范文
2015/03/05 职场文书
Java数据结构之链表相关知识总结
2021/06/18 Java/Android
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python