欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

需求分析

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

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

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

SFTP配置

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

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

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

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

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

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

在導航欄部分找到Tools→Deployment→Configuration

在彈出的窗口中點擊左上角加號,選擇SFTP

輸入你想給這個鏈接起的名字

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

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

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

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

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

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

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

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

而我真正的項目的絕對路徑是/nfs/users/xiaoming/jinrong_project/Finance_Data

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

第一行的Local Path默認是我們的項目文件夾所在的本地目錄。

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

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

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

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

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

需要注意的問題

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

配置遠程解釋器

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

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

在新彈出來的窗口中選擇SSH Interpreter,因為我們剛才配置SFTP的時候已經(jīng)配置了SSH了,這時候我們就選擇第二個選項Existing server configuration,選擇我們剛才配置的SSH即可。

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

which python

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

ls -l

命令查看其連接指向

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

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

點擊Finish,完成配置,這時我們的遠程Python解釋器就成功配置好了。

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

[Errno 2] No such file or directory

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

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

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

使用方法

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

此時我們右鍵運行該文件,會報錯

[Errno 2] No such file or directory

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

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

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

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

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

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

需注意的問題

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

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

總結(jié)

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

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

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

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

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

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

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

相關(guān)文章

  • Python爬蟲之對CSDN榜單進行分析

    Python爬蟲之對CSDN榜單進行分析

    這篇文章主要介紹了Python爬蟲之對CSDN榜單進行分析,文章有詳細代碼,簡單易懂,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2023-01-01
  • python+selenium爬取微博熱搜存入Mysql的實現(xiàn)方法

    python+selenium爬取微博熱搜存入Mysql的實現(xiàn)方法

    這篇文章主要介紹了python+selenium爬取微博熱搜存入Mysql的實現(xiàn)方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • 如何使用python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

    如何使用python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組

    python處理數(shù)據(jù)文件的途徑有很多種,下面這篇文章主要給大家介紹了關(guān)于如何使用python讀取Excel指定范圍并轉(zhuǎn)為數(shù)組的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-11-11
  • Python操作CSV格式文件的方法大全

    Python操作CSV格式文件的方法大全

    CSV 文件(Comma Separated Values file,即逗號分隔值文件)是一種純文本文件,它使用特定的結(jié)構(gòu)來排列表格數(shù)據(jù),這篇文章主要給大家介紹了關(guān)于Python操作CSV格式文件的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • Keras SGD 隨機梯度下降優(yōu)化器參數(shù)設(shè)置方式

    Keras SGD 隨機梯度下降優(yōu)化器參數(shù)設(shè)置方式

    這篇文章主要介紹了Keras SGD 隨機梯度下降優(yōu)化器參數(shù)設(shè)置方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python中NumPy的矩陣與通用函數(shù)

    Python中NumPy的矩陣與通用函數(shù)

    這篇文章主要介紹了Python中NumPy的矩陣與通用函數(shù),Numpy是python的一種開源的數(shù)值計算擴展。這種工具可用來存儲和處理大型矩陣,比Python自身的嵌套列表結(jié)構(gòu)要高效的多支持大量的維度數(shù)組與矩陣運算,需要的朋友可以參考下
    2023-07-07
  • Python環(huán)境搭建以及Python與PyCharm安裝詳細圖文教程

    Python環(huán)境搭建以及Python與PyCharm安裝詳細圖文教程

    PyCharm是一種PythonIDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,這篇文章主要給大家介紹了關(guān)于Python環(huán)境搭建以及Python與PyCharm安裝的詳細圖文教程,需要的朋友可以參考下
    2024-03-03
  • python之import機制詳解

    python之import機制詳解

    這篇文章主要介紹了python的import機制,需要的朋友可以參考下
    2014-07-07
  • python標準庫模塊之json庫的基礎(chǔ)用法

    python標準庫模塊之json庫的基礎(chǔ)用法

    json庫是處理JSON格式的Python標準庫,json庫主要包括兩類函數(shù),操作函數(shù)和解析函數(shù),下面這篇文章主要給大家介紹了關(guān)于python標準庫模塊之json庫的基礎(chǔ)用法,需要的朋友可以參考下
    2022-06-06
  • python 字典d[k]中key不存在的解決方案

    python 字典d[k]中key不存在的解決方案

    本文主要介紹了在Python中處理字典鍵不存在時獲取默認值的兩種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-01-01

最新評論