python开发之远程开发工具对比

前言

除了本地开发外,还有一种常见的开发方式就是远程开发,一般情况是一台Windows或mac笔记本作为日常使用的电脑,另有一台linux服务器作为开发服务器。开发服务器的性能往往较强,这样远程开发的方式一方面可以让我们在习惯的系统下工作,又能利用强大的服务器,而且linux下开发python往往比win下要方便得多。现阶段,使用比较广泛的python开发工具是Pycharm和VSCode(Jupyter Notebook/Lab也有一些人用,不过本人还是认为做做验证可以,真的做日常开发还是不太方便),下面就以这2个工具分别介绍他们的远程开发的方式,可以按需选择。

Pycharm

Pycharm应该可以算是最强大的python IDE了,但与它强大的本地开发能力相比,它的远程开发能力一般,特别是以前,它的远程开发实际基于SFTP, 远程目录和本地目录不断进行同步,这种方式使用起来麻烦,严格来说算不上真的远程开发。后来Jetbrains又搞起了Projector,顾名思义就是把远程IDE投射到本地,再后来,Projector停止开发了,转而开发Gateway...才有点向VSCode的远程开发看齐的意思了。

SFTP方式

这个方式的使用可以参考在PyCharm上配置SFTP并使用远程解释器-腾讯云开发者社区-腾讯云 (tencent.com),对于Python来说,基本可以忽略这个方式了。对于使用CLion C++来说,这种方式还有一定作用,就是在目标运行环境是嵌入式设备的时候:CLion远程调试嵌入式开发板程序_CodingInCV的博客-CSDN博客

Projector方式

这一方式是基于RDP(remote display protocol)协议,将IDE运行的画面通过web的形式显式,比较类似于VSCode的web方案CodeServer。官方文档:JetBrains IDEs - Projector documentation官方项目:JetBrains/projector-server: Server-side library for running Swing applications remotely (github.com)

img

这个项目还有一个客户端项目:

img

个人体验来说,是比较一般的,一个比较严重的问题是这种方式对网速要求高,而且bug较多,有时会闪退。配置起来也比较麻烦。如果使用纯浏览器的话,有一个问题就是浏览器本身有很多快捷键,会导致软件的快捷键和本地使用不一致,比如原本本地使用的F12,在浏览器就需要Ctrl+F12,用起来不太舒服,用客户端会好一些,不过客户端有bug,现在也停止开发了,转而到Gateway了,这一方式也不用再尝试了。

Gateway

GateWay是Jetbrains最新的远程方案了,目标是和VSCode看齐,下面重点介绍这种方式。

img

官方网站:Remote development overview | PyCharm Documentation (jetbrains.com)整个过程由Client、Gateway和IDE Backend构成,前2者运行在本地主机,IDE Backend运行在远程linux主机。

安装

这种方式我们只需要在本地主机安装Gateway,而不再需要安装IDE本身。下载安装包:JetBrains Gateway - JetBrains IDE 的远程开发Gateway远程开发属于专业版的功能,可以试用或激活后使用。可参考:https://www.cnblogs.com/haoliuhust/p/17510176.html)

配置远程主机SSH信息

安装完成后打开软件,选择SSH->New Connection新建连接,填入远程主机信息:

img

如果不想每次都输入密码,则可以指定私钥。

安装IDE Backend

设置好SSH信息后,根据提示选择IDE版本。默认会自动拉取安装包,如果远程主机的网络不好或者不能联网,也可以本地下好,点击“Installation options”上传。

img

设置完成后,工具将开始下载IDE到远程主机,等待安装完成。

img

使用

安装完成后,将打开Pycharm界面,基本上使用和本地开发没有区别。

img

主要的区别是设置中有一些选项分为client和host,包括插件也会分client和host, 基本和VSCode类似。

img

另一个区别是点击关闭软件时,会有几个选项:

img

Close and Stop就是把远程的IDE Backend也关闭,下次再连接时IDE要重新启动,而Close and Keep Running则只关闭客户端,远程的IDE Backend还继续运行,下次连接速度会更快。下次再打开Gateway时,会显式我们已有的连接,点击名称就会连接上,非常的方便。

img

VSCode

vscode的远程开发就比较方便了,不仅目标主机可以是实际的主机,也可以是docker 容器或者WSL。vscode也有两种方式,一种是SSH, 一种是 The VS Code Server,还处在预览阶段,大部分所说的vscode远程都是指SSH的方式。

img

这种方式和Jetbrains Gateway一样,远程运行一个VS Code Server。不过这个Code Server相比Jetbrains的IDE Backend,要轻量很多,因此安装起来速度更快。这也能理解,毕竟vscode的很多功能都是通过插件完成的,本体本身是比较小的,而Pycharm是个IDE, 本身就集成了大部分的功能。官方文档:Developing on Remote Machines using SSH and Visual Studio Code

安装

启用OpenSSH客户端(以win10为例)

  • 图形化安装

img

  1. 打开“设置”,选择“应用”>“应用和功能”,然后选择“可选功能” 。

  1. 扫描列表,查看是否已安装 OpenSSH。 如果未安装,请在页面顶部选择“添加功能”,然后:

查找“OpenSSH 客户端”,再单击“安装”

对于作为开发的本地机来说,我们只需要装客户端就好了。

命令行安装

还可以通过Powershell命令行安装

若要使用 PowerShell 安装 OpenSSH,请先以管理员身份运行 PowerShell。 为了确保 OpenSSH 可用,请运行以下 cmdlet:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

如果两者均尚未安装,则此操作应返回以下输出:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresentName  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

然后,根据需要安装服务器或客户端组件:

# Install the OpenSSH Client
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

这两者应该都会返回以下输出:

Path          :
Online        : True
RestartNeeded : False

安装VSCode

Download Visual Studio Code - Mac, Linux, Windows下载安装VSCode软件,按提示安装即可

安装远程开发插件

在Extensions中搜索Remote - SSH插件安装,安装后侧边栏将会出现Remote Explorer图标:

img

连接远程服务器

密码登陆

img

点击“+”,在弹出的输入框中输入ssh登陆信息,并根据提示输入密码。第一次连接时VSCode将在远程机上安装VSCode Server。

img

安装完成后,就可以打开远程主机上的文件或文件夹进行开发了。

img

为了开发python程序,还需要安装Pylance和Python插件

img

当我们打开Python项目或文件时,将会提示我们设置Python解释器,或手动在界面切换:

img

这样就配置完毕了,接下来的开发就像在本地使用VSCode开发python程序一样了。

免密连接

上一步中,可能会需要频繁输入密码,我们可以通过设置免密登录的方式,免去这个过程。本地电脑生成密钥

ssh-keygen -t rsa -b 4096

在本地命令行执行上述命令,生成私钥和公钥,windows上一般位于C:\Users\your-user\.ssh\id_xxx.pub)授权远程主机

ssh-copy-id user-name@ip 
或者指定公钥文件
ssh-copy-id -i xx.pub user-name@ip

这样我们就不再需要输入密码了。进阶:修改VSCode连接配置有一种情况是我们可能对不同的远程主机有不同的密钥,这时,就需要修改VSCode的连接配置来使用不同的私钥了

img

Remote Explorer->OpenSSH Config,修改(若没有则添加)配置文件中的IdentityFile为对应公钥的私钥文件。

补充:CodeServer

VSCode还有一个开源社区实现的浏览器版本:coder/code-server: VS Code in the browser (github.com)不过这种方式就和Jetbrains的Projector一样,基于浏览器不可避免的会出现一些快捷键用不了,需要改变操作习惯,总归不太方便。

总结

对于Python远程开发,可以在在Gateway和VSCode中2选一,如无必要,不应再去折腾Jetbrains曾经的SFTP和Projector方式,基于Web的Jupyter Notebook和Code Server可以作为验证开发,用于正式开发个人觉得还是不便。

Jetbrains Gateway:

优点:Pycharm本身的功能比较强大,对于习惯使用Pycharm开发的来说,远程开发基本没有差异,没有任何学习成本。Pycharm的配置和调试也要比VSCode方便一些,毕竟是专业的Python IDE。

缺点:只有专业版才有这个功能,因此需要收费。IDE Backend的包大小要比VSCode Server大不少,在新的环境上配置的时间会比VSCode长,对于需要频繁切换远程来说就不太方便了(比如远程环境是临时分配的机器,有些公司有深度学习平台,根据请求,每次分配机器用于调试深度学习代码),另一方面,对于连接到容器也没有VSCode方便。

适合场景和人群:基于上面的特点,Jetbrains Gateway适合远程开发机比较固定的情况。

VSCode

优点:免费,VSCode Server比较小,配置时间比较短。插件系统丰富,通过插件,对Jupyter Notebook也有较好的支持。另一方面,通过插件,VSCode对python之外的其他语言也有较好的支持,可以在一个环境内开发不同的语言。

缺点:调试功能没有Pycharm那么强大和方便,相对需要一些学习成本。

适合场景和人群:多语言开发者,远程开发机不固定,(还有缺钱买Pycharm专业版的...)希望通过上面的介绍,大家能找到适合自己的开发工具。

文章转载自:CoderInCV

原文链接:https://www.cnblogs.com/haoliuhust/p/17555042.html

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/635995.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

组件(Component):可重用的元素

目标效果:点击粉色按钮后,出现一行“为什么非要点我?”的文字。 用组件的方式实现:首先单击项目文件夹01,然后右键弹窗中点击“添加新文件” 。 选择 QML File 文件: 文件名就叫Button,然后把代…

QoS简介

QoS产生的背景 网络的普及和业务的多样化使得互联网流量激增,从而产生网络拥塞,增加转发时延,严重时还会产生丢包,导致业务质量下降甚至不可用。所以,要在网络上开展这些实时性业务,就必须解决网络拥塞问题…

Three.js 学习笔记之模型(学习中1.20更新) | 组 - 模型 - 几何体 - 材质

文章目录 模型 几何体 材质层级模型组- THREE.Group递归遍历模型树结构object3D.traverse() 模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形网格模型独有的属性与方法 几何体BufferGeometry缓冲类型几何体BufferGeometry - 基类创…

基于SSM的KTV包厢管理系统(有报告)。Javaee项目,ssm项目。

演示视频: 基于SSM的KTV包厢管理系统(有报告)。Javaee项目,ssm项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过…

Linux 查看命令有哪些?区别是什么(2023-12-27)

参考文章 linux中ls、cat、vim、more、head、tail、grep同是查看命令,他们之间到底有什么区别? - 知乎 linux中ls、cat、vim、more、head、tail、grep同是查看命令,他们之间到底有什么区别? 1、ls ls(英文全拼&…

使用 mybatis-plus 的mybaits的一对多时, total和record的不匹配问题

应该是框架的问题,去官方仓库提了个issues,等回复 https://github.com/baomidou/mybatis-plus/issues/5923 回复来了: 背景 发现 record是两条,但是total显示3 使用resultMap一对多时,三条数据会变成两条&#xff0…

J4 - ResNet与DenseNet结合

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 环境模型设计模型效果展示总结与心得体会 环境 系统: Linux语言: Python3.8.10深度学习框架: Pytorch2.0.0cu118显卡:GT…

高速CAN总线 C 或 B 节点发送 A节点接收 电压分析

CAN收发器放大图 CAN总线3节点框图,如下图 图① CAN总线 C 节点发送,B 节点接收简化后的逻辑框图如下图。 总线上 A B C 三个节点,按照CAN总线规定,首尾 A B 两个节点处需要接入1个120Ω的终端电阻,如下图&#xff1a…

Pytest系列(2) - assert断言详细使用

前言 与unittest不同,pytest使用的是python自带的assert关键字来进行断言assert关键字后面可以接一个表达式,只要表达式的最终结果为True,那么断言通过,用例执行成功,否则用例执行失败 assert小栗子 想在抛出异常之…

重学Java 10 面向对象

正是风雨欲来的时候,火却越烧越旺了 ——24.1.20 重点 1.为何使用面向对象思想编程 2.如何使用面向对象思想编程 3.何时使用面向对象思想编程 4.利用代码去描述世间万物的分类 5.在一个类中访问另外一个类中的成员 -> new对象 6.成员变量和局部变量的区别 一…

力扣刷MySQL-第六弹(详细讲解)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

Maven error in opening zip file?maven源码debug定位问题jar包

文章目录 问题发现调试Maven1. 查看maven版本2. 下载对应版本的maven源码3. 打开maven源码,配置启动选项 启动maven debug模式进入maven 源码,打断点调试找jar包算账 已录制视频 视频连接 问题发现 最近使用maven分析jar包的时候遇到了一个很搞的问题。…

PSoc62™开发板之i2c通信

实验目的 使用模拟i2c接口读取温湿度气压模块BME280数据 实验准备 PSoc62™开发板温湿度气压模块BME280公母头杜邦线 板载资源 本次实验是通过模拟i2c时序的方式来进行通信,理论上可以有非常多的方式配置i2c引脚,不像硬件i2c那样芯片出厂引脚已经固…

Summary for Packaging and Assembly Technologies for Integrated Systems

目录 Introduction Type of Packages: Packaging of integrated devices Question 1: Question 2: Question 3: Question 4: Question 5: Report 1: Front-end and back-end process Question 6: Question 7: Inspection Process Report 2: Prototyping and mas…

【谭浩强C程序设计精讲 chap4】选择结构程序设计

文章目录 第4章 选择结构程序设计一、用 if 语句实现选择结构二、用 switch 语句实现多分支选择结构三、条件运算符和条件表达式 第4章 选择结构程序设计 一、用 if 语句实现选择结构 一般形式: if (表达式)  语句1 [ else  语句2 ] 其他形式,常用的…

web前端项目-3D台球游戏【附源码】

3D台球 【3D台球】这款游戏的操作简洁明了,玩家只需要简单的练习两分钟便能够掌握。玩家需要用鼠标控制击球的方向和力度,将白球打进洞中。每次进球后,玩家需要选择下一个要击打的球,直到所有的球都打进洞中。但要注意避免黑球进…

【Unity】URP报错Object reference not set to an instance of an object

使用URP之后,Unity报错:显示不正常 NullReferenceException: Object reference not set to an instance of an object UnityEngine.Rendering.Universal.UniversalAdditionalCameraData.get_cameraStack () (at Library/PackageCache/com.unity.render-p…

Flink实时数仓同步:拉链表实战详解

一、背景 在大数据领域,业务数据通常最初存储在关系型数据库,例如MySQL。然而,为了满足日常分析和报表等需求,大数据平台会采用多种不同的存储方式来容纳这些业务数据。这些存储方式包括离线仓库、实时仓库等,根据不同…

智能AI写作到底怎么样?这几款AI写作非常好用

近年来,人工智能(AI)技术的快速发展已经渗透到各个领域,包括写作领域。AI写作软件通过模仿指定作家的风格和语言,能够生成高质量的文章。这种技术的出现引发了广泛的讨论和争议。本文将探讨AI写作的优点,并…

Windows给docker设置阿里源

windows环境搭建专栏🔗点击跳转 Windows系统的docker设置阿里源 文章目录 Windows系统的docker设置阿里源1.获得镜像加速器2.配置docker 由于我们生活在中国大陆,所以外网的访问总是那么慢又困难,用docker拉取几兆的小镜象还能忍受&#xff…