使用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 相关文章推荐
pyramid配置session的方法教程
Nov 27 Python
Python基于twisted实现简单的web服务器
Sep 29 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
python实现多线程的两种方式
May 22 Python
Python中的字符串查找操作方法总结
Jun 27 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
Jun 11 Python
numpy.linspace 生成等差数组的方法
Jul 02 Python
python 实现一次性在文件中写入多行的方法
Jan 28 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
Python re正则表达式元字符分组()用法分享
Feb 10 Python
scrapy爬虫:scrapy.FormRequest中formdata参数详解
Apr 30 Python
能让Python提速超40倍的神器Cython详解
Jun 24 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
天使彦史上最神还原,性别曝光的那一刻,百万网友恋爱了
2020/03/02 国漫
PHP数字格式化
2006/12/06 PHP
ThinkPHP3.1新特性之动态设置自动完成和自动验证示例
2014/06/19 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
js 获取class的元素的方法 以及创建方法getElementsByClassName
2013/03/11 Javascript
js处理json以及字符串的比较等常用操作
2013/09/08 Javascript
详解JavaScript 中getElementsByName在IE中的注意事项
2017/02/21 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
2017/03/15 Javascript
vue.js事件处理器是什么
2017/03/20 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
vuejs+element UI table表格中实现禁用部分复选框的方法
2019/09/20 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
Python实现希尔排序算法的原理与用法实例分析
2017/11/23 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
使用Python更换外网IP的方法
2018/07/09 Python
Python文件打开方式实例详解【a、a+、r+、w+区别】
2019/03/30 Python
总结Python图形用户界面和游戏开发知识点
2019/05/22 Python
Python2和3字符编码的区别知识点整理
2019/08/08 Python
python urllib爬虫模块使用解析
2019/09/05 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
python中selenium库的基本使用详解
2020/07/31 Python
Python descriptor(描述符)的实现
2020/11/15 Python
基于HTML5超酷摄像头(HTML5 webcam)拍照功能实现代码
2012/12/13 HTML / CSS
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
高级3D打印市场:Gambody
2019/12/26 全球购物
信息系统专业个人求职信范文
2013/12/07 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
社区母亲节活动方案
2014/03/05 职场文书
商业房地产广告语
2014/03/13 职场文书
2015年社区卫生工作总结
2015/04/21 职场文书
高中英语教学反思范文
2016/03/02 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫