最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Pycharm中SSH、SFTP連接遠(yuǎn)程服務(wù)器編輯調(diào)試實(shí)例

 更新時(shí)間:2024年06月25日 09:04:39   作者:autoreleasepools  
這篇文章主要介紹了Pycharm中SSH、SFTP連接遠(yuǎn)程服務(wù)器編輯調(diào)試實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

需求分析

我目前的需求是將代碼部署在服務(wù)器上,使用Pycharm的SSH連接Linux服務(wù)器,用Pycharm的友好界面遠(yuǎn)程運(yùn)行服務(wù)器上的Python項(xiàng)目,并且可以對其進(jìn)行修改。

本篇文章查閱了大量的資料,并希望把整個(gè)的流程以及錯誤處理描述的比較全面。 

注意:本文章適用于Pycharm的專業(yè)版,免費(fèi)的社區(qū)版本沒有遠(yuǎn)程連接的功能。

SFTP配置

首先第一步來配置SFTP,很多教程在這一步先來設(shè)置SSH,SSH設(shè)置比較簡單,但是Pycharm在設(shè)置完SSH后只能擔(dān)當(dāng)XShell等軟件的角色,并不能滿足我們剛才提出的需求(比如說要查看整個(gè)項(xiàng)目文件列表并把Python文件展示在Pycharm中),所以第一步我們先來設(shè)置SFTP。

創(chuàng)建一個(gè)新的Pycharm項(xiàng)目

在最開始做這件事的時(shí)候我并不知道本地項(xiàng)目和遠(yuǎn)程項(xiàng)目的關(guān)系,為了事實(shí)上Pycharm在這里把本地的項(xiàng)目和遠(yuǎn)程的項(xiàng)目做了一個(gè)映射的關(guān)系,通過這些配置,我們既可以把服務(wù)器項(xiàng)目的文件拉取到本地項(xiàng)目中,也可以把本地項(xiàng)目的文件上傳到服務(wù)器項(xiàng)目中,所以為了方便演示,我們創(chuàng)建一個(gè)新的項(xiàng)目,這個(gè)項(xiàng)目我把他叫做Pycharm_Remote

如圖所示,我們在本地創(chuàng)建一個(gè)最基本的純Python項(xiàng)目,如果您不清楚具體的過程,可以在搜索引擎中搜索Pycharm 創(chuàng)建項(xiàng)目關(guān)鍵字來查找教程。

創(chuàng)建項(xiàng)目中使用的Python環(huán)境可以先設(shè)置為我們本地的Python環(huán)境。

創(chuàng)建SFTP相關(guān)配置

在導(dǎo)航欄部分找到Tools→Deployment→Configuration

在彈出的窗口中點(diǎn)擊左上角加號,選擇SFTP

輸入你想給這個(gè)鏈接起的名字

點(diǎn)擊OK,在新出來的頁面中創(chuàng)建一個(gè)新的SSH連接,點(diǎn)擊三個(gè)點(diǎn),然后點(diǎn)擊加號,輸入一個(gè)新的SSH連接。

其中Visible only for this project指的是是否在不同項(xiàng)目中共享這個(gè)SFTP配置,可以按需開啟,在SSH設(shè)置中輸入服務(wù)器的IP地址,以及相應(yīng)的用戶名,就如同在XShell中連接服務(wù)器那樣。

我們可以測試連接,測試成功后點(diǎn)擊OK后回到配置SFTP的界面。

如果是使用Windows連接Linux的話,最好可以把Advanced中的編碼從GBK改成UTF-8,這樣在報(bào)錯的時(shí)候如果服務(wù)器那邊返回的是中文的錯誤,Windows這邊就不會顯示亂碼而找不到原因所在(血淚教訓(xùn)),而且如果遇到中文數(shù)據(jù)文件什么的與服務(wù)器也好溝通。

接下來我們配置比較關(guān)鍵的一個(gè)環(huán)節(jié),需要配置Root Path,這個(gè)字段的意思是遠(yuǎn)程服務(wù)器的根路徑,比如說我把他設(shè)置為/home/a/,那就意味著我們把a這個(gè)文件夾當(dāng)做了Pycharm所檢測的根路徑,將來的項(xiàng)目必須在a這個(gè)文件夾下面Pycharm才能檢測得到。

這里還有一個(gè)Autodetect的選項(xiàng),他會自動選擇主目錄下的用戶文件夾作為Root Path,如/home/xiaoming/,大家按需所取即可。

如上圖所示,我們配置了SFTP的所有Connection部分,接下來來到Mapping部分,這部分的用處是將我們本地的文件夾和服務(wù)器上的項(xiàng)目文件夾聯(lián)系映射起來,所以這個(gè)地方我們要填入的是我們的項(xiàng)目文件夾,而這里要注意的是要填入相對于Root Path的路徑,而不是絕對路徑,

比如說我在Root Path部分填入的路徑是/nfs/users/xiaoming/jinrong_project

而我真正的項(xiàng)目的絕對路徑是/nfs/users/xiaoming/jinrong_project/Finance_Data

這時(shí)候我在Mapping的Deployment Path中填入的就是/Finance_Data

第一行的Local Path默認(rèn)是我們的項(xiàng)目文件夾所在的本地目錄。

點(diǎn)擊OK,至此我們的SFTP配置就結(jié)束了,這時(shí)我們可以看項(xiàng)目的右下角展現(xiàn)了我們剛才的配置名稱server2。

這時(shí)我們可以在導(dǎo)航欄找到Tools→Deployment→Browse Remote Host,在右邊就會出現(xiàn)剛才設(shè)置的Root Path下的所有文件。(如沒有出現(xiàn),見需要注意的問題

我們選擇相應(yīng)的文件,雙擊就可以展現(xiàn)出來了

這個(gè)時(shí)候我們可以對其進(jìn)行編輯,在導(dǎo)航欄找到Tools→Deployment→Automatic Upload,打開,這時(shí)候我們對文件的更改就會自動上傳到服務(wù)器上

這時(shí)我們已經(jīng)可以對文件進(jìn)行編輯了,也可以看到了服務(wù)器上的項(xiàng)目文件,其本質(zhì)我認(rèn)為是在Pycharm端配置了一個(gè)SFTP的傳輸工具,可是卻不能運(yùn)行,原因是沒有配置Python的遠(yuǎn)程解釋器。

需要注意的問題

在創(chuàng)建好SFTP配置后,我們想查看服務(wù)器文件的時(shí)候會發(fā)現(xiàn)右側(cè)的Remote Host會顯示Nothing to show,這時(shí)候不要擔(dān)心,如果目錄沒有配置錯誤就相信自己,把項(xiàng)目關(guān)掉然后重新打開,此時(shí)再查看服務(wù)器的文件就可以正常顯示了。

配置遠(yuǎn)程解釋器

本節(jié)的前提條件是服務(wù)器上有正常的可以運(yùn)行的Python環(huán)境。

類似于添加Pycharm的解釋器環(huán)境,在Setting中找到Python Interpreter,點(diǎn)擊右上方的小齒輪,選擇Add。

在新彈出來的窗口中選擇SSH Interpreter,因?yàn)槲覀儎偛排渲肧FTP的時(shí)候已經(jīng)配置了SSH了,這時(shí)候我們就選擇第二個(gè)選項(xiàng)Existing server configuration,選擇我們剛才配置的SSH即可。

點(diǎn)擊Next,在這一步我們需要讓Pycharm找到服務(wù)器的Python在哪個(gè)地方,并且設(shè)置掃描的文件夾。如果不清楚服務(wù)器的Python安裝在哪個(gè)地方,可以使用

which python

命令來查找所使用的Python位置,我這里使用的是Anaconda中的虛擬環(huán)境,記得要查看是否是軟連接,比如說我這個(gè)找到的Python就是個(gè)軟連接,其真實(shí)文件指向的是python3.9,可以使用

ls -l

命令查看其連接指向

回到剛才的設(shè)置,我們在Interpreter中填入上述的Python路徑,下面那個(gè)選項(xiàng)按需勾選(見需注意的問題),其意思是使用Sudo權(quán)限來運(yùn)行代碼。

接下來我們要設(shè)置本地與遠(yuǎn)程同步的項(xiàng)目文件夾,他默認(rèn)是放在一個(gè)/tmp/pycharm_project_283這種路徑,這個(gè)路徑是臨時(shí)的,將來很容易出點(diǎn)問題就找不到,這里需要把這個(gè)路徑和剛才我們在SFTP配置中Mapping的路徑(也就是映射到的服務(wù)器端的項(xiàng)目文件夾)設(shè)置的一樣。

點(diǎn)擊Finish,完成配置,這時(shí)我們的遠(yuǎn)程Python解釋器就成功配置好了。

點(diǎn)擊OK,這時(shí)我們整個(gè)項(xiàng)目就配置上了遠(yuǎn)程的Python解釋器,(在這里還有一點(diǎn)需要注意的,見需注意的問題),就可以運(yùn)行文件了,但是到這里還沒有結(jié)束,幾乎所有的教程到這里都結(jié)束了,說只要運(yùn)行就可以了,但是實(shí)際上當(dāng)你打開一個(gè)服務(wù)器的文件想要運(yùn)行的時(shí)候,你會發(fā)現(xiàn)出現(xiàn)了這樣的錯誤:

[Errno 2] No such file or directory

這時(shí)候你會很無奈,為什么按照上面的配置仔細(xì)配好了,他卻找不到運(yùn)行的文件呢?無奈的你去各大網(wǎng)站搜索教程,得到的無非是這幾類答案:

  • 路徑不對,所設(shè)置的解釋器的路徑和Mapping的路徑不一致。但是很顯然多次檢查后,這兩個(gè)路徑在我們的項(xiàng)目中是一致的。
  • 設(shè)置了多個(gè)Mapping,導(dǎo)致沖突。在本項(xiàng)目中我們并沒有設(shè)置多個(gè)Mapping。
  • Upload 的功能配置出現(xiàn)問題,更改Automatic Upload選項(xiàng)為on explicit save,原因是修改后沒有同步而導(dǎo)致的找不到文件。但是設(shè)置之后并沒有作用。

其實(shí)真正的原因是:我們搞錯了需求與實(shí)現(xiàn),通過這種方法Pycharm只能實(shí)現(xiàn)將服務(wù)器上的文件Download下來到本地,在本地進(jìn)行修改,同時(shí)修改會上傳到服務(wù)器上,運(yùn)行的時(shí)候是使用遠(yuǎn)程解釋器運(yùn)行。是不是有點(diǎn)暈了?接下來舉個(gè)例子來試試。

使用方法

在服務(wù)器的項(xiàng)目中現(xiàn)在有一個(gè)test.py文件,路徑是/nfs/users/xiaoming/jinrong_project/Finace_Data/test.py,文件中的內(nèi)容如下圖所示,注意標(biāo)紅的位置。

此時(shí)我們右鍵運(yùn)行該文件,會報(bào)錯

[Errno 2] No such file or directory

這時(shí)候我們對在右側(cè)服務(wù)器文件中找到test.py,把他下載到本地來。

這時(shí)候我們會發(fā)現(xiàn)左側(cè)本地項(xiàng)目文件夾下多了一個(gè)test.py,打開這個(gè)文件,注意紅圈中的不同。

文件仍然與服務(wù)器上的test.py內(nèi)容相同,只不過下載到了本地,這時(shí)候再用相同的方式運(yùn)行,會發(fā)現(xiàn)出現(xiàn)結(jié)果了。

這時(shí)候如果我們對本地的test.py更改內(nèi)容,再運(yùn)行的話,同樣可以出來結(jié)果。我們可以注意下圖中綠圈圈出來的地方,可以看出我們是成功運(yùn)行了服務(wù)器上的文件,而不是運(yùn)行的本地的文件(這里我的test.py在一個(gè)新文件夾下,與剛才說的不同,但是不影響)。

這時(shí)候我們點(diǎn)開服務(wù)器上的test.py,發(fā)現(xiàn)內(nèi)容已經(jīng)同步到服務(wù)器上,本地端和服務(wù)端的兩個(gè)文件一模一樣。

至此我們完成了整個(gè)功能的使用流程,如果將來需要更換遠(yuǎn)程的項(xiàng)目或者本地的項(xiàng)目,重新設(shè)置一下Mapping就可以了。

需注意的問題

在添加遠(yuǎn)程Python Interpreter的時(shí)候,有一個(gè)選項(xiàng)來確認(rèn)是否使用Sudo來運(yùn)行代碼,很多教程這時(shí)會無腦告訴你要把他勾選上,但是不告訴你為什么,所以記得如果你的服務(wù)器不是自己做主的話,一定不要勾選這個(gè),因?yàn)槟愣极@得不到Sudo權(quán)限,更何況Pycharm了,他會報(bào)錯Can’t obtain python version,這時(shí)候如果你剛才設(shè)置編碼格式為GBK的時(shí)候,就會出現(xiàn)一堆報(bào)錯亂碼,很不容易找到問題所在。

在成功配置好Python解釋器后,在這個(gè)解釋器的Configuration中,我們可以看到其實(shí)在添加這個(gè)遠(yuǎn)程Python解釋器后,他是自動配置了一個(gè)SFTP的,下圖中畫紅圈的地方其實(shí)有兩個(gè),其中一個(gè)是我們剛才配置的Server2,另一個(gè)是這個(gè)解釋器自動配置的SFTP(這里我把那個(gè)刪除了,使用的是Server2),其自動配置的SFTP的路徑和Mapping都是默認(rèn)的,還需要像我們剛才那樣設(shè)置,注意這里不要用錯。

總結(jié)

綜上,其實(shí)我們的需求和實(shí)際的實(shí)現(xiàn)是有所出入的,所以才導(dǎo)致了各種問題的出現(xiàn)。我想要的需求是直接在服務(wù)器上編輯并運(yùn)行代碼,而不是像現(xiàn)在這樣在本地編輯代碼后上傳到服務(wù)器運(yùn)行,我們可以清晰的看到Pycharm的思路是這樣的:

  • 從服務(wù)器上下載代碼到本地,在本地進(jìn)行編輯
  • 對本地文件點(diǎn)擊運(yùn)行
  • 將修改后的本地文件自動上傳到服務(wù)器上,調(diào)用遠(yuǎn)程Python解釋器來運(yùn)行服務(wù)器文件

所以我目前并不清楚Pycharm是否可以做到不從服務(wù)器上下載文件,直接打開服務(wù)器的代碼進(jìn)行編輯運(yùn)行,為什么要多出來下載這一步呢?或許是為了本地與服務(wù)器項(xiàng)目的同步開發(fā)?印象中VSCode似乎能實(shí)現(xiàn)這個(gè)功能。

可以看出,Pycharm的Deployment和解釋器其實(shí)是兩個(gè)分隔的模塊,配置Deployment時(shí)并不會配置遠(yuǎn)程解釋器,只能做到閱讀和編輯遠(yuǎn)程代碼,而配置解釋器的時(shí)候會自動生成一個(gè)新的SFTP配置,這給第一次配置的人增添了理解難度。所以如果想將流程簡單化的話,可以先不設(shè)置SFTP配置,直接添加遠(yuǎn)程Python解釋器,然后使用它自動做好的SFTP配置,對其設(shè)置Root Path和Mapping。

最后還有一個(gè)問題,為什么同樣是在服務(wù)器運(yùn)行代碼,直接點(diǎn)開服務(wù)器的代碼運(yùn)行就會找不到文件,而本地代碼上傳到服務(wù)器后就能找到文件呢?

我的猜想是這樣:雖然同樣是在服務(wù)器運(yùn)行代碼,但是為了簡化我們自己的操作,Pycharm把尋找本地文件→上傳至服務(wù)器→運(yùn)行服務(wù)器代碼這三步全部合成在運(yùn)行這一步上,這就導(dǎo)致我們?nèi)绻苯舆\(yùn)行服務(wù)器代碼,因?yàn)檫@個(gè)代碼是服務(wù)器上的,所以Pycharm在本地找不到這個(gè)文件,就會報(bào)錯,后面的步驟自然也執(zhí)行不了了。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解

    mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解

    今天小編就為大家分享一篇mac安裝scrapy并創(chuàng)建項(xiàng)目的實(shí)例講解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • Python類class參數(shù)self原理解析

    Python類class參數(shù)self原理解析

    這篇文章主要介紹了Python類class參數(shù)self原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • PyTorch中apex安裝方式和避免踩坑

    PyTorch中apex安裝方式和避免踩坑

    本文主要介紹了PyTorch中apex安裝方式和避免踩坑,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 淺談Django學(xué)習(xí)migrate和makemigrations的差別

    淺談Django學(xué)習(xí)migrate和makemigrations的差別

    這篇文章主要介紹了淺談Django學(xué)習(xí)migrate和makemigrations的差別,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • python面向?qū)ο笾衉_new__和__init__區(qū)別

    python面向?qū)ο笾衉_new__和__init__區(qū)別

    在 Python 的面向?qū)ο缶幊讨?__new__ 和 __init__ ,它們的職責(zé)、執(zhí)行順序和返回值完全不同,下面就來詳細(xì)的介紹一下兩者的區(qū)別,感興趣的可以了解下
    2026-04-04
  • YOLOv5車牌識別實(shí)戰(zhàn)教程(六)性能優(yōu)化與部署

    YOLOv5車牌識別實(shí)戰(zhàn)教程(六)性能優(yōu)化與部署

    這篇文章主要介紹了YOLOv5車牌識別實(shí)戰(zhàn)教程(六)性能優(yōu)化與部署,在這個(gè)教程中,我們將一步步教你如何使用YOLOv5進(jìn)行車牌識別,幫助你快速掌握YOLOv5車牌識別技能,需要的朋友可以參考下
    2023-04-04
  • python如何用pyecharts制作詞云圖

    python如何用pyecharts制作詞云圖

    大家好,本篇文章主要講的是python如何用pyecharts制作詞云圖,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • Python中字典及遍歷常用函數(shù)的使用詳解

    Python中字典及遍歷常用函數(shù)的使用詳解

    這篇文章主要為大家介紹了Python中字典有關(guān)的常見函數(shù)的使用方法,以及字典遍歷的方法。文中通過示例代碼為我們進(jìn)行了詳細(xì)介紹,對學(xué)習(xí)Python字典有一定幫助,需要的可以參考一下
    2022-06-06
  • 教你用Python3+mysql8.0搭建Django框架

    教你用Python3+mysql8.0搭建Django框架

    發(fā)現(xiàn)有很多小伙伴還不知道如何搭建Django框架,今天特地整理了本篇文章,基于Python3和mysql8.0,文中有非常詳細(xì)的步驟教程,對小伙伴很有幫助,需要的朋友可以參考下
    2021-05-05
  • 不到40行代碼用Python實(shí)現(xiàn)一個(gè)簡單的推薦系統(tǒng)

    不到40行代碼用Python實(shí)現(xiàn)一個(gè)簡單的推薦系統(tǒng)

    這篇文章主要給大家介紹了如何利用不到40行python代碼實(shí)現(xiàn)一個(gè)簡單的推薦系統(tǒng),文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論

高唐县| 周宁县| 乐平市| 渝中区| 唐海县| 镇平县| 广饶县| 武邑县| 冕宁县| 台东市| 镇雄县| 齐齐哈尔市| 四会市| 扎兰屯市| 三亚市| 鹿泉市| 新建县| 象山县| 西安市| 鄂托克旗| 郧西县| 安乡县| 云龙县| 东乡族自治县| 志丹县| 仙游县| 乐安县| 丹阳市| 房山区| 资溪县| 桃园县| 西昌市| 津南区| 石棉县| 铁岭县| 洱源县| 敦煌市| 长沙县| 互助| 高尔夫| 万源市|