PyCharm 配置远程python解释器和在本地修改服务器代码


Posted in Python onJuly 23, 2019

最近在学习机器学习的过程中,常常需要将本地写的代码传到GPU服务器中,然后在服务器上运行。之前的做法一直是先在本地写好代码,然后通过FileZilla这样的文件传输工具来将写好的文件传到服务器,再通过ssh工具远程连接到服务器,执行相应的python脚本。这样的方式十分繁琐,效率很低。今天听到朋友提到了配置远程解释器

使用场景

先说说自己的使用场景,我是在什么情况下,需要将IDE配置成这样的环境来方便我的工作。

首先,我需要在本地机子上写python代码,但是因为是机器学习相关的一些代码,有时候本机跑可能会很慢,或者根本跑不下来。而此时,我还有一台可用的服务器,上面配置了相应的python3环境和相应的机器学习库,比如tensorflow,keras,tflearn等等。因此通常需要将本地写好的代码上传到服务器上,在服务器上运行。由于代码能力渣渣,所以常常需要反复修改代码,而直接在服务器上修改代码不是很方便。因此,我希望可以像下面一样操作:

  1. 我在服务器上有一个工作目录,我希望可以直接在我本地机子上修改工作目录下面的代码文件
  2. 因为Pycharm可以配置远程python解释器,所以我希望可以直接在本地的机子上运行修改的代码,并且直接在本地机子查看运行的结果,而不用ssh到远程服务器在执行代码。
  3. 具体来说就是,我可以直接在本地上编写代码,然后直接点击pycharm的绿色小三角执行代码,并且这个执行是由远程服务器的python解释器执行的,而不是在我本地机子上配置的python环境下执行。

配置过程

本机环境

操作系统:win10

IDE:Pycharm

远程服务器

操作系统:ubuntu14.04

配置了ssh,可以使用ssh进行远程登陆

配置Deployment

首先,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration.

PyCharm 配置远程python解释器和在本地修改服务器代码

然后可以看到如下的配置页面,具体各配置在图片中说明:

PyCharm 配置远程python解释器和在本地修改服务器代码

然后打开Deployment的Mapping选项卡:

PyCharm 配置远程python解释器和在本地修改服务器代码

这样,Deployment的配置就完成了。这个配置完成了之后,其实是相当于配置了一个ftp工具可以连接到服务器上,从而可以查看和修改服务器上的文件。你可以通过Tools > Deplotment > Browse Remote Host来打开相应的RemoteHost面板,这个面板显示的就是服务器上的文件,显示的范围是你在Deployment中的Connection选项卡下配置的Root path路径下的文件及文件夹。

PyCharm 配置远程python解释器和在本地修改服务器代码

你可以直接在RemoteHost面板里双击某个文件并且直接进行编辑。双击某个文件后你可以看到编辑区域的顶部有一个横条,并且横条的右边有三各按钮,分别是比较,撤销和上传操作。你在这里面编辑文件之后,可以直接点击上传按钮,就会提交到服务器了。但是其实不推荐直接在这里修改代码,后面的使用流程会说到。

PyCharm 配置远程python解释器和在本地修改服务器代码

以上的配置,就可以直接在PyCharm里看到服务器上的文件,我感觉就像是直接在IDE里集成了一个FTP传输工具。

配置远程python解释器

这里主要讲的是如何配置远程python解释器。

首先,通过File > Settings,打开设置选项卡。

在设置选项卡里,点击"Project:项目名"这个按钮,在展开的小项里再点击Project Interpreter,右边就会变成Interpreter的配置页面。

PyCharm 配置远程python解释器和在本地修改服务器代码

点击Interpreter配置页面的小此轮按钮,然后再选择add Remote。

PyCharm 配置远程python解释器和在本地修改服务器代码

弹出如下弹窗并配置相应的信息。

PyCharm 配置远程python解释器和在本地修改服务器代码

经过以上步骤,你的远程解释器就配置好了。这时,你就可以直接点击小三角按钮,调用远程服务器上的python解释器来运行代码。但是在此,你还需要看看下面的使用流程。如果你直接双击RemoteHost面板里的文件,然后点击小三角运行是会报错的,可能会提示:

No such file or directory

在配置中也参考了很多其他文章,但是有些文章还是没有讲清楚具体的流程,因此我把自己认为可能“正确”的流程记录一下。

在介绍Deployment配置的时候,我们讲到了Mapping选项卡的配置。这个配置将本地的一个路径映射成了服务器上的一个路径,因此,在这个文件夹下的文件和服务器上的文件是同步的,当然,需要你在本地修改的时候upload到服务器或者设置自动upload。

在这里,我的mapping配置如下:

local path Deployment path on server
E:\workspace\remotespace xxxx/workspacexhh

首先,我们在pycharm中通过 File > open... 来打开一个新的项目,项目路径就选择上面的local path路径。

在Project窗口中就可以看到打开了这个项目,当前这个项目还是空的,里面什么也没有。

PyCharm 配置远程python解释器和在本地修改服务器代码

然后,我们打开RemoteHost小窗口,在test.py文件上右键,再选择Download from Here,文件就会下载到本地了。返回到Project小窗口,就可以看到test.py。其他的文件类似,如果有父目录,他会将父目录也一起下载下来,所以文件和路径都会和服务器保持一致。

PyCharm 配置远程python解释器和在本地修改服务器代码

这样,你就可以在本地编辑test.py文件。

PyCharm 配置远程python解释器和在本地修改服务器代码

在编辑完成后,你可以在文件上右键或者直接在编辑区域右键,选择upload to... 将文件上传到服务器,这样就可以更新服务器端的代码了,并且保持了和本地代码一致。

PyCharm 配置远程python解释器和在本地修改服务器代码

此时,点击绿色小三角运行代码,可以看到相应的输出。但是看看控制台的输出,可以发现,python解释器不是本地的,而跑的文件也不是本地。

PyCharm 配置远程python解释器和在本地修改服务器代码

上面就是整个从服务器下载文件至本地,在本地修改文件,将文件上传至服务器,然后直接在本地运行的整个过程。

在这个过程中,也可以发现,经过这样的配置,我们的代码现在一共有三个版本:一个是本地代码,一个是服务器上的代码,还有一个是RemoteHost面板中的代码(这个地方的代码如果直接编辑了,其实也可以提交到服务器,但是不能直接运行)

所以,如果通过上面的配置进行远程调试的话,我认为大致流程应该是下面这样:

  1. 在RemoteHost面板中,选中想要修改的代码,然后右键点击Download from here将内容下载至本地(这个本地是你在配置Deployment时设置的本地文件夹)。
  2. 在本地(这个本地是你在配置Deployment时设置的本地文件夹)修改你的代码,修改完成后在编辑区域或者文件名上右键,选择upload to...来提交到服务器。
  3. 在提交之后,你可以像普通调用本地解释器一样的直接运行本地的这个文件(但其实运行的是服务器的文件)

在这里,虽然RemoteHost里的文件可以直接编辑,但是并不建议这么做,因为这里编辑之后并不能直接运行。

Python 相关文章推荐
利用Python开发实现简单的记事本
Nov 15 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 Python
python调用OpenCV实现人脸识别功能
May 25 Python
使用Python实现从各个子文件夹中复制指定文件的方法
Oct 25 Python
在python中实现对list求和及求积
Nov 14 Python
Python实现合并excel表格的方法分析
Apr 13 Python
Python 安装第三方库 pip install 安装慢安装不上的解决办法
Jun 18 Python
关于ZeroMQ 三种模式python3实现方式
Dec 23 Python
OpenCV+python实现实时目标检测功能
Jun 24 Python
python使用matplotlib绘制折线图的示例代码
Sep 22 Python
python实现代码审查自动回复消息
Feb 01 Python
python实现DEM数据的阴影生成的方法
Jul 23 #Python
Django REST framework 如何实现内置访问频率控制
Jul 23 #Python
详解pandas中MultiIndex和对象实际索引不一致问题
Jul 23 #Python
python视频按帧截取图片工具
Jul 23 #Python
python如何实现从视频中提取每秒图片
Oct 22 #Python
详解Django 时间与时区设置问题
Jul 23 #Python
利用python-pypcap抓取带VLAN标签的数据包方法
Jul 23 #Python
You might like
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
yii2 RBAC使用DbManager实现后台权限判断的方法
2016/07/23 PHP
Laravel实现短信注册的示例代码
2018/05/29 PHP
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
JavaScript中使用document.write向页面输出内容实例
2014/10/16 Javascript
解决jquery中动态新增的元素节点无法触发事件问题的两种方法
2015/10/30 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
基于javascript实现精确到毫秒的倒计时限时抢购
2016/04/17 Javascript
nodejs实现发出蜂鸣声音(系统报警声)的方法
2017/01/18 NodeJs
详解Angular CLI + Electron 开发环境搭建
2017/07/20 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
vue实现多组关键词对应高亮显示功能
2019/07/25 Javascript
使用 Vue 实现一个虚拟列表的方法
2019/08/20 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
angula中使用iframe点击后不执行变更检测的问题
2020/05/10 Javascript
Vue开发中常见的套路和技巧总结
2020/11/24 Vue.js
Python2.5/2.6实用教程 入门基础篇
2009/11/29 Python
从零学python系列之新版本导入httplib模块报ImportError解决方案
2014/05/23 Python
python中使用序列的方法
2015/08/03 Python
python实现井字棋游戏
2020/03/30 Python
python做量化投资系列之比特币初始配置
2018/01/23 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
django用户登录验证的完整示例代码
2019/07/21 Python
python opencv图像处理(素描、怀旧、光照、流年、滤镜 原理及实现)
2020/12/10 Python
使用phonegap进行提示操作的具体方法
2017/03/30 HTML / CSS
婴儿鞋,独特的婴儿服装和配件:Zutano
2018/11/03 全球购物
销售员自我评价怎么写
2013/09/19 职场文书
工商管理专业实习生自我鉴定
2013/09/29 职场文书
四年级下册教学反思
2014/02/01 职场文书
大学生创业项目方案
2014/03/08 职场文书
乡镇群众路线整改落实情况汇报
2014/10/28 职场文书
学生旷课检讨书500字
2014/10/28 职场文书
年终工作总结范文2014
2014/11/27 职场文书
钓鱼岛事件感想
2015/08/11 职场文书