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中for循环的使用
Apr 14 Python
Python简单遍历字典及删除元素的方法
Sep 18 Python
利用python爬取斗鱼app中照片方法实例
Dec 03 Python
Python实现字典按照value进行排序的方法分析
Dec 23 Python
解决pandas无法在pycharm中使用plot()方法显示图像的问题
May 24 Python
Python中最大递归深度值的探讨
Mar 05 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 Python
python networkx 包绘制复杂网络关系图的实现
Jul 10 Python
Python matplotlib生成图片背景透明的示例代码
Aug 30 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
Django choices下拉列表绑定实例
Mar 13 Python
django model的update时auto_now不被更新的原因及解决方式
Apr 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
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
PHP实现仿百度文库,豆丁在线文档效果(word,excel,ppt转flash)
2016/03/10 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
PHP实现的AES 128位加密算法示例
2019/09/16 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
2012/10/11 Javascript
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
Angular4 中内置指令的基本用法
2017/07/31 Javascript
Vue服务器渲染Nuxt学习笔记
2018/01/31 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
Vue 封装防刷新考试倒计时组件的实现
2020/06/05 Javascript
浅谈pyhton学习中出现的各种问题(新手必看)
2017/05/17 Python
用python写个自动SSH登录远程服务器的小工具(实例)
2017/06/17 Python
python中学习K-Means和图片压缩
2017/11/20 Python
pip命令无法使用的解决方法
2018/06/12 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
Python切图九宫格的实现方法
2019/10/10 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
html5 localStorage本地存储_动力节点Java学院整理
2017/07/06 HTML / CSS
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
加拿大著名时装品牌:SOIA & KYO
2016/08/23 全球购物
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
Crucial英睿达法国官网:内存条及SSD固态硬盘升级
2018/07/13 全球购物
配件采购员岗位职责
2013/12/03 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
平安校园建设方案
2014/05/02 职场文书
励志演讲稿300字
2014/08/21 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
大学生党员暑假实践(活动总结)
2019/08/21 职场文书
Python代码风格与编程习惯重要吗?
2021/06/03 Python
Python 中的Sympy详细使用
2021/08/07 Python