Python知識(shí)分享網(wǎng) - 專(zhuān)業(yè)的Python學(xué)習(xí)網(wǎng)站 學(xué)Python,上Python222
python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比
匿名網(wǎng)友發(fā)布于:2023-07-16 11:33:53
(侵權(quán)舉報(bào))

前言

除了本地開(kāi)發(fā)外,還有一種常見(jiàn)的開(kāi)發(fā)方式就是遠(yuǎn)程開(kāi)發(fā),一般情況是一臺(tái)Windows或mac筆記本作為日常使用的電腦,另有一臺(tái)linux服務(wù)器作為開(kāi)發(fā)服務(wù)器。開(kāi)發(fā)服務(wù)器的性能往往較強(qiáng),這樣遠(yuǎn)程開(kāi)發(fā)的方式一方面可以讓我們?cè)诹?xí)慣的系統(tǒng)下工作,又能利用強(qiáng)大的服務(wù)器,而且linux下開(kāi)發(fā)python往往比win下要方便得多。
現(xiàn)階段,使用比較廣泛的python開(kāi)發(fā)工具是Pycharm和VSCode(Jupyter Notebook/Lab也有一些人用,不過(guò)本人還是認(rèn)為做做驗(yàn)證可以,真的做日常開(kāi)發(fā)還是不太方便),下面就以這2個(gè)工具分別介紹他們的遠(yuǎn)程開(kāi)發(fā)的方式,可以按需選擇。

 

Pycharm

Pycharm應(yīng)該可以算是最強(qiáng)大的python IDE了,但與它強(qiáng)大的本地開(kāi)發(fā)能力相比,它的遠(yuǎn)程開(kāi)發(fā)能力一般,特別是以前,它的遠(yuǎn)程開(kāi)發(fā)實(shí)際基于SFTP, 遠(yuǎn)程目錄和本地目錄不斷進(jìn)行同步,這種方式使用起來(lái)麻煩,嚴(yán)格來(lái)說(shuō)算不上真的遠(yuǎn)程開(kāi)發(fā)。后來(lái)Jetbrains又搞起了Projector,顧名思義就是把遠(yuǎn)程IDE投射到本地,再后來(lái),Projector停止開(kāi)發(fā)了,轉(zhuǎn)而開(kāi)發(fā)Gateway...才有點(diǎn)向VSCode的遠(yuǎn)程開(kāi)發(fā)看齊的意思了。

 

SFTP方式

這個(gè)方式的使用可以參考在PyCharm上配置SFTP并使用遠(yuǎn)程解釋器-騰訊云開(kāi)發(fā)者社區(qū)-騰訊云 (tencent.com),對(duì)于Python來(lái)說(shuō),基本可以忽略這個(gè)方式了。對(duì)于使用CLion C++來(lái)說(shuō),這種方式還有一定作用,就是在目標(biāo)運(yùn)行環(huán)境是嵌入式設(shè)備的時(shí)候:CLion遠(yuǎn)程調(diào)試嵌入式開(kāi)發(fā)板程序_CodingInCV的博客-CSDN博客

 

Projector方式

這一方式是基于RDP(remote display protocol)協(xié)議,將IDE運(yùn)行的畫(huà)面通過(guò)web的形式顯式,比較類(lèi)似于VSCode的web方案CodeServer。
官方文檔:JetBrains IDEs - Projector documentation
官方項(xiàng)目:JetBrains/projector-server: Server-side library for running Swing applications remotely (github.com)

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖1

這個(gè)項(xiàng)目還有一個(gè)客戶(hù)端項(xiàng)目:

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖2

個(gè)人體驗(yàn)來(lái)說(shuō),是比較一般的,一個(gè)比較嚴(yán)重的問(wèn)題是這種方式對(duì)網(wǎng)速要求高,而且bug較多,有時(shí)會(huì)閃退。配置起來(lái)也比較麻煩。如果使用純?yōu)g覽器的話(huà),有一個(gè)問(wèn)題就是瀏覽器本身有很多快捷鍵,會(huì)導(dǎo)致軟件的快捷鍵和本地使用不一致,比如原本本地使用的F12,在瀏覽器就需要Ctrl+F12,用起來(lái)不太舒服,用客戶(hù)端會(huì)好一些,不過(guò)客戶(hù)端有bug,現(xiàn)在也停止開(kāi)發(fā)了,轉(zhuǎn)而到Gateway了,這一方式也不用再?lài)L試了。

 

Gateway

GateWay是Jetbrains最新的遠(yuǎn)程方案了,目標(biāo)是和VSCode看齊,下面重點(diǎn)介紹這種方式。

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖3

官方網(wǎng)站:Remote development overview | PyCharm Documentation (jetbrains.com)
整個(gè)過(guò)程由Client、Gateway和IDE Backend構(gòu)成,前2者運(yùn)行在本地主機(jī),IDE Backend運(yùn)行在遠(yuǎn)程linux主機(jī)。

 

安裝

這種方式我們只需要在本地主機(jī)安裝Gateway,而不再需要安裝IDE本身。
下載安裝包:JetBrains Gateway - JetBrains IDE 的遠(yuǎn)程開(kāi)發(fā)
Gateway遠(yuǎn)程開(kāi)發(fā)屬于專(zhuān)業(yè)版的功能,可以試用或激活后使用。
可參考:https://www.cnblogs.com/haoliuhust/p/17510176.html)

 

配置遠(yuǎn)程主機(jī)SSH信息

安裝完成后打開(kāi)軟件,選擇SSH->New Connection新建連接,填入遠(yuǎn)程主機(jī)信息:

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖4

如果不想每次都輸入密碼,則可以指定私鑰。

 

安裝IDE Backend

設(shè)置好SSH信息后,根據(jù)提示選擇IDE版本。默認(rèn)會(huì)自動(dòng)拉取安裝包,如果遠(yuǎn)程主機(jī)的網(wǎng)絡(luò)不好或者不能聯(lián)網(wǎng),也可以本地下好,點(diǎn)擊“Installation options”上傳。

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖5

設(shè)置完成后,工具將開(kāi)始下載IDE到遠(yuǎn)程主機(jī),等待安裝完成。

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比  圖6

 

使用

安裝完成后,將打開(kāi)Pycharm界面,基本上使用和本地開(kāi)發(fā)沒(méi)有區(qū)別。

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖7

主要的區(qū)別是設(shè)置中有一些選項(xiàng)分為client和host,包括插件也會(huì)分client和host, 基本和VSCode類(lèi)似。

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比  圖8

另一個(gè)區(qū)別是點(diǎn)擊關(guān)閉軟件時(shí),會(huì)有幾個(gè)選項(xiàng):

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比  圖9

Close and Stop就是把遠(yuǎn)程的IDE Backend也關(guān)閉,下次再連接時(shí)IDE要重新啟動(dòng),而Close and Keep Running則只關(guān)閉客戶(hù)端,遠(yuǎn)程的IDE Backend還繼續(xù)運(yùn)行,下次連接速度會(huì)更快。
下次再打開(kāi)Gateway時(shí),會(huì)顯式我們已有的連接,點(diǎn)擊名稱(chēng)就會(huì)連接上,非常的方便。

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比  圖10

 

VSCode

vscode的遠(yuǎn)程開(kāi)發(fā)就比較方便了,不僅目標(biāo)主機(jī)可以是實(shí)際的主機(jī),也可以是docker 容器或者WSL。vscode也有兩種方式,一種是SSH, 一種是 The VS Code Server,還處在預(yù)覽階段,大部分所說(shuō)的vscode遠(yuǎn)程都是指SSH的方式。

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比  圖11

這種方式和Jetbrains Gateway一樣,遠(yuǎn)程運(yùn)行一個(gè)VS Code Server。不過(guò)這個(gè)Code Server相比Jetbrains的IDE Backend,要輕量很多,因此安裝起來(lái)速度更快。這也能理解,畢竟vscode的很多功能都是通過(guò)插件完成的,本體本身是比較小的,而Pycharm是個(gè)IDE, 本身就集成了大部分的功能。
官方文檔:Developing on Remote Machines using SSH and Visual Studio Code

 

安裝

啟用OpenSSH客戶(hù)端(以win10為例)

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖12

 

1、打開(kāi)“設(shè)置”,選擇“應(yīng)用”>“應(yīng)用和功能”,然后選擇“可選功能” 。

2、掃描列表,查看是否已安裝 OpenSSH。 如果未安裝,請(qǐng)?jiān)陧?yè)面頂部選擇“添加功能”,然后:

  • 查找“OpenSSH 客戶(hù)端”,再單擊“安裝”
    對(duì)于作為開(kāi)發(fā)的本地機(jī)來(lái)說(shuō),我們只需要裝客戶(hù)端就好了。
  • 命令行安裝
    還可以通過(guò)Powershell命令行安裝
    若要使用 PowerShell 安裝 OpenSSH,請(qǐng)先以管理員身份運(yùn)行 PowerShell。 為了確保 OpenSSH 可用,請(qǐng)運(yùn)行以下 cmdlet:

 

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

 

如果兩者均尚未安裝,則此操作應(yīng)返回以下輸出:

 

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

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

 

然后,根據(jù)需要安裝服務(wù)器或客戶(hù)端組件:

 

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

 

這兩者應(yīng)該都會(huì)返回以下輸出:

 

Path          :
Online        : True
RestartNeeded : False

 

安裝VSCode

Download Visual Studio Code - Mac, Linux, Windows
下載安裝VSCode軟件,按提示安裝即可

 

安裝遠(yuǎn)程開(kāi)發(fā)插件

在Extensions中搜索Remote - SSH插件安裝,安裝后側(cè)邊欄將會(huì)出現(xiàn)Remote Explorer圖標(biāo):

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖13

 

連接遠(yuǎn)程服務(wù)器

密碼登陸

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比  圖14

點(diǎn)擊“+”,在彈出的輸入框中輸入ssh登陸信息,并根據(jù)提示輸入密碼。
第一次連接時(shí)VSCode將在遠(yuǎn)程機(jī)上安裝VSCode Server。

 

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖15

安裝完成后,就可以打開(kāi)遠(yuǎn)程主機(jī)上的文件或文件夾進(jìn)行開(kāi)發(fā)了。
 

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖16

為了開(kāi)發(fā)python程序,還需要安裝Pylance和Python插件

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖17

當(dāng)我們打開(kāi)Python項(xiàng)目或文件時(shí),將會(huì)提示我們?cè)O(shè)置Python解釋器,或手動(dòng)在界面切換:

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖18

這樣就配置完畢了,接下來(lái)的開(kāi)發(fā)就像在本地使用VSCode開(kāi)發(fā)python程序一樣了。

 

免密連接

上一步中,可能會(huì)需要頻繁輸入密碼,我們可以通過(guò)設(shè)置免密登錄的方式,免去這個(gè)過(guò)程。
 

本地電腦生成密鑰

 

ssh-keygen -t rsa -b 4096

 

在本地命令行執(zhí)行上述命令,生成私鑰和公鑰,windows上一般位于C:\Users\your-user\.ssh\id_xxx.pub)
 

授權(quán)遠(yuǎn)程主機(jī)

 

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

 

這樣我們就不再需要輸入密碼了。
 

進(jìn)階:修改VSCode連接配置
有一種情況是我們可能對(duì)不同的遠(yuǎn)程主機(jī)有不同的密鑰,這時(shí),就需要修改VSCode的連接配置來(lái)使用不同的私鑰了

python開(kāi)發(fā)之遠(yuǎn)程開(kāi)發(fā)工具對(duì)比 圖19

Remote Explorer->OpenSSH Config,修改(若沒(méi)有則添加)配置文件中的IdentityFile為對(duì)應(yīng)公鑰的私鑰文件。

 

補(bǔ)充:CodeServer

VSCode還有一個(gè)開(kāi)源社區(qū)實(shí)現(xiàn)的瀏覽器版本:coder/code-server: VS Code in the browser (github.com)
不過(guò)這種方式就和Jetbrains的Projector一樣,基于瀏覽器不可避免的會(huì)出現(xiàn)一些快捷鍵用不了,需要改變操作習(xí)慣,總歸不太方便。

 

總結(jié)

對(duì)于Python遠(yuǎn)程開(kāi)發(fā),可以在在Gateway和VSCode中2選一,如無(wú)必要,不應(yīng)再去折騰Jetbrains曾經(jīng)的SFTP和Projector方式,基于Web的Jupyter Notebook和Code Server可以作為驗(yàn)證開(kāi)發(fā),用于正式開(kāi)發(fā)個(gè)人覺(jué)得還是不便。

 

Jetbrains Gateway:

優(yōu)點(diǎn):Pycharm本身的功能比較強(qiáng)大,對(duì)于習(xí)慣使用Pycharm開(kāi)發(fā)的來(lái)說(shuō),遠(yuǎn)程開(kāi)發(fā)基本沒(méi)有差異,沒(méi)有任何學(xué)習(xí)成本。Pycharm的配置和調(diào)試也要比VSCode方便一些,畢竟是專(zhuān)業(yè)的Python IDE。
缺點(diǎn):只有專(zhuān)業(yè)版才有這個(gè)功能,因此需要收費(fèi)。IDE Backend的包大小要比VSCode Server大不少,在新的環(huán)境上配置的時(shí)間會(huì)比VSCode長(zhǎng),對(duì)于需要頻繁切換遠(yuǎn)程來(lái)說(shuō)就不太方便了(比如遠(yuǎn)程環(huán)境是臨時(shí)分配的機(jī)器,有些公司有深度學(xué)習(xí)平臺(tái),根據(jù)請(qǐng)求,每次分配機(jī)器用于調(diào)試深度學(xué)習(xí)代碼),另一方面,對(duì)于連接到容器也沒(méi)有VSCode方便。
適合場(chǎng)景和人群:基于上面的特點(diǎn),Jetbrains Gateway適合遠(yuǎn)程開(kāi)發(fā)機(jī)比較固定的情況。

 

VSCode

優(yōu)點(diǎn):免費(fèi),VSCode Server比較小,配置時(shí)間比較短。插件系統(tǒng)豐富,通過(guò)插件,對(duì)Jupyter Notebook也有較好的支持。另一方面,通過(guò)插件,VSCode對(duì)python之外的其他語(yǔ)言也有較好的支持,可以在一個(gè)環(huán)境內(nèi)開(kāi)發(fā)不同的語(yǔ)言。
缺點(diǎn):調(diào)試功能沒(méi)有Pycharm那么強(qiáng)大和方便,相對(duì)需要一些學(xué)習(xí)成本。
適合場(chǎng)景和人群:多語(yǔ)言開(kāi)發(fā)者,遠(yuǎn)程開(kāi)發(fā)機(jī)不固定,(還有缺錢(qián)買(mǎi)Pycharm專(zhuān)業(yè)版的...)
希望通過(guò)上面的介紹,大家能找到適合自己的開(kāi)發(fā)工具。

轉(zhuǎn)載自:https://www.cnblogs.com/haoliuhust/p/17555042.html