利用 PyCharm 实现本地代码和远端的实时同步功能


Posted in Python onMarch 23, 2020

我们知道在国内使用 Docker,无论是 Pull、Build 还是 Push 镜像都十分慢,因为毕竟很多源都是国外的源,下载和上传慢是必然的现象。

最近我在写的项目都是用 Docker 运行起来的,在测试的时候,我可能需要先 Build 一下然后跑起来测试下逻辑有没有问题。

在我自己本地机器上构建就有这么几个问题,一个问题当然就是速度慢,我用的肯定是国内的上网线路,有时候用个新镜像,半天 Pull 不下来,而且有的镜像是一些私有镜像,不好弄加速器,有的公开镜像试了几个加速器效果也不理想。另外一个问题当 Build 镜像的时候,如果涉及到一些编译的过程,就会占用我的本地机器的 CPU 资源,有时候搞得还挺卡。

所以,我干嘛不把这些 Build 的过程挪到服务器上来搞呢?如果我有一台国外的服务器,还能解决速度问题,另外还不会占用我本地机器的 CPU 资源。

但问题是,我要在自己机器上写代码呀,编译和运行又在远端,那代码怎么同步到远端呢?

那么本节就来介绍下一种本地代码实时同步远程服务器的方法吧。

其实这个功能我用了好久了,但之前一直用起来感觉略鸡肋,因为免不了的还需要在远端配置一下运行环境才能跑,不过后来切到 Docker 运行的话,就舒服多了。如果大家用 Docker 运行项目的话,推荐大家可以试下。

要求

在这开始之前要求有一台远程 Linux 服务器,安装好 Docker 即可。另外当然还需要能 SSH 远程访问,这是必须的。另外如果是海外的服务器是最好的了,构建镜像速度会更快。

另外这里我是用 PyCharm 实现的远程同步功能,如果大家写 Python 多的话当然是推荐 PyCharm。不过其他的 JetBrains IDE 也基本都带着这个功能,所以如果用其他的 JetBrains IDE 也是 OK 的。注意,这里必须要用的是专业版,只有专业版才有这个功能。

配置

好,我们要实现的是本地代码实时同步服务器的功能。利用 PyCharm 自带的组件我们轻松实现这个功能。

PyCharm 有一个 SFTP 部署模块,可以帮助我们把本地的代码实时同步到远端。

好,首先 PyCharm 打开任意一个项目,在这里我就以自己的项目为例了。

利用 PyCharm 实现本地代码和远端的实时同步功能

接着我们点击 PyCharm 的 Tools -> Deployment -> Configuration,这里我们可以配置远程 SFTP 服务器,如图所示:

利用 PyCharm 实现本地代码和远端的实时同步功能

打开之后是这样子,这里选择 SFTP,然后填入服务器的连接信息,如图所示:

利用 PyCharm 实现本地代码和远端的实时同步功能

在这里可以点「TEST CONNECTION」测试下是否能够连接成功。

OK,配置完了之后,我们已经成功添加好了一台远程服务器了,比如我这里就添加了一台我自己的服务器,Host 为 vm1.cuiqingcai.com。

既然要实现本地和服务器文件同步,那么当然必须要指定本地项目文件夹和远程哪个文件夹同步吧。在哪里指定呢?切换到第二个选项卡,Mappings,如图所示:

利用 PyCharm 实现本地代码和远端的实时同步功能

这里我们可以通过选择 LocalPath 和 Deployment Path 分别指定本地和远程的文件夹名称。注意这里后者指的是相对服务器工作目录的路径。

好了,就是这样,基本配置就完成了。如果你还想配置某些路径不同步的话,还可以在第三个选项卡 Excluded Paths 里面配置。

接着,还有一些可以配置的地方,点击 Tools -> Deployment -> Options 我们可以配置更多细节,如图所示:

利用 PyCharm 实现本地代码和远端的实时同步功能

比如这里我就配置了下什么时候上传,这里我改成了按 Ctrl + S 保存的时候再上传,这样我可以自由控制上传的时机。

另外这里还需要把自动上传勾选上,如图所示:

利用 PyCharm 实现本地代码和远端的实时同步功能

好了,整个都配置好啦。

测试

接下来我们上传下试试吧,可以点菜单里面的 Upload to 选项来上传代码。

点击上传之后,PyCharm 会单独开一个 File Transfer 窗口来显示文件上传的结果,如图所示:

利用 PyCharm 实现本地代码和远端的实时同步功能

这样就上传完毕了。

接着我们任意修改一个文件,按保存,即 Ctrl + S,这里就出现了自动上传的日志,提示某个文件被上传成功了。

利用 PyCharm 实现本地代码和远端的实时同步功能

OK,验证没问题。

远程 SSH

当然 PyCharm 还提供了远程 SSH Termial 的功能,直接点选 Tools -> Start SSH Session 即可,如图所示:

利用 PyCharm 实现本地代码和远端的实时同步功能

点了之后就会提示选择哪个远程服务器,选了之后,下方 Terminal 就弹出来了,和普通的 SSH Shell 一模一样。

利用 PyCharm 实现本地代码和远端的实时同步功能

OK,接下来要构建镜像,我只需要运行对应的 docker-compose 命令就好了,速度瞬间就上来了,我再也不用看着龟速的下拉速度而发愁了,而不用担心本地机器的资源消耗了。

利用 PyCharm 实现本地代码和远端的实时同步功能

OK,美滋滋。

构建完了运行之后,直接远程访问就好了。

注意:这里记得把服务器的安全组限制打开,以免出现远程端口无法访问的问题。

到此这篇关于利用 PyCharm 实现本地代码和远端的实时同步功能的文章就介绍到这了,更多相关PyCharm 代码和远端实时同步内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python自动化工具日志查询分析脚本代码实现
Nov 26 Python
从零学Python之入门(五)缩进和选择
May 27 Python
对numpy中数组元素的统一赋值实例
Apr 04 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
如何使用Python实现斐波那契数列
Jul 02 Python
用Python+OpenCV对比图像质量的几种方法
Jul 15 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
Aug 09 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
python except异常处理之后不退出,解决异常继续执行的实现
Apr 25 Python
Python计算信息熵实例
Jun 18 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
Feb 07 Python
详解MindSpore自定义模型损失函数
Jun 30 Python
Python面向对象程序设计之私有变量,私有方法原理与用法分析
Mar 23 #Python
Python常用编译器原理及特点解析
Mar 23 #Python
Python3.7.0 Shell添加清屏快捷键的实现示例
Mar 23 #Python
Python面向对象程序设计之继承、多态原理与用法详解
Mar 23 #Python
python实现图像拼接功能
Mar 23 #Python
Python猴子补丁Monkey Patch用法实例解析
Mar 23 #Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
Mar 23 #Python
You might like
php删除指定目录的方法
2015/04/03 PHP
PHP使用stream_context_create()模拟POST/GET请求的方法
2016/04/02 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
2013/03/26 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
用javascript添加控件自定义属性解析
2013/11/25 Javascript
jquery移除、绑定、触发元素事件使用示例详解
2014/04/10 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
2014/11/19 Javascript
浅谈JavaScript中的字符编码转换问题
2015/07/07 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件
2016/06/02 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
Extjs gridpanel 中的checkbox(复选框)根据某行的条件不能选中的解决方法
2017/02/17 Javascript
基于AngularJS实现的工资计算器实例
2017/06/16 Javascript
微信小程序实现手势图案锁屏功能
2018/01/30 Javascript
借助云开发实现小程序短信验证码的发送
2020/01/06 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
[48:41]VP vs VG Supermajor小组赛 B组胜者组决赛 BO3 第二场 6.2
2018/06/03 DOTA
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
Python实现去除列表中重复元素的方法小结【4种方法】
2018/04/27 Python
python reverse反转部分数组的实例
2018/12/13 Python
Python使用requests提交HTTP表单的方法
2018/12/26 Python
python实现操作文件(文件夹)
2019/10/31 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
Python模块/包/库安装的六种方法及区别
2020/02/24 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
2020/04/24 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
机电专业毕业生自我鉴定2014
2014/10/04 职场文书
2015年学习部工作总结范文
2015/03/31 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers