1. 程式人生 > >PyCharm 配置遠端伺服器執行除錯python

PyCharm 配置遠端伺服器執行除錯python

使用場景

先說說自己的使用場景,我是在什麼情況下,需要將IDE配置成這樣的環境來方便我的工作。

首先,我需要在本地機子上寫python程式碼,但是因為是機器學習相關的一些程式碼,有時候本機跑可能會很慢,或者根本跑不下來。而此時,我還有一臺可用的伺服器,上面配置了相應的python3環境和相應的機器學習庫,比如tensorflow,keras,tflearn等等。因此通常需要將本地寫好的程式碼上傳到伺服器上,在伺服器上執行。由於程式碼能力渣渣,所以常常需要反覆修改程式碼,而直接在伺服器上修改程式碼不是很方便。因此,我希望可以像下面一樣操作:

  1. 我在伺服器上有一個工作目錄,我希望可以直接在我本地機子上修改工作目錄下面的程式碼檔案
  2. 因為Pycharm可以配置遠端python直譯器,所以我希望可以直接在本地的機子上執行修改的程式碼,並且直接在本地機子檢視執行的結果,而不用ssh到遠端伺服器在執行程式碼。
  3. 具體來說就是,我可以直接在本地上編寫程式碼,然後直接點選pycharm的綠色小三角執行程式碼,並且這個執行是由遠端伺服器的python直譯器執行的,而不是在我本地機子上配置的python環境下執行。

配置過程

本機環境

IDE:Pycharm

遠端伺服器

作業系統:ubuntu16.04

配置了ssh,可以使用ssh進行遠端登陸

配置Deployment

首先,在pycharm的選單欄依次找到:Tools > Deployment > Configuration.

通過選單欄開啟Deployment設定頁面

然後可以看到如下的配置頁面,具體各配置在圖片中說明:

配置Deployment的Connection

然後開啟Deployment的Mapping選項卡:

這樣,Deployment的配置就完成了。這個配置完成了之後,其實是相當於配置了一個ftp工具可以連線到伺服器上,從而可以檢視和修改伺服器上的檔案。你可以通過Tools > Deplotment > Browse Remote Host來開啟相應的RemoteHost面板,這個面板顯示的就是伺服器上的檔案,顯示的範圍是你在Deployment中的Connection選項卡下配置的Root path路徑下的檔案及資料夾。

代開RemoteHost面板

你可以直接在RemoteHost面板裡雙擊某個檔案並且直接進行編輯。雙擊某個檔案後你可以看到編輯區域的頂部有一個橫條,並且橫條的右邊有三各按鈕,分別是比較,撤銷和上傳操作。你在這裡面編輯檔案之後,可以直接點選上傳按鈕,就會提交到伺服器了。但是其實不推薦直接在這裡修改程式碼,後面的使用流程會說到。

直接編輯RemoteHost裡的檔案

以上的配置,就可以直接在PyCharm裡看到伺服器上的檔案,我感覺就像是直接在IDE裡集成了一個FTP傳輸工具。

配置遠端python直譯器

這裡主要講的是如何配置遠端python直譯器。

首先,通過File > Settings,開啟設定選項卡。

在設定選項卡里,點選"Project:專案名"這個按鈕,在展開的小項裡再點選Project Interpreter,右邊就會變成Interpreter的配置頁面。

點選Interpreter配置頁面的小此輪按鈕,然後再選擇add Remote。

彈出如下彈窗並配置相應的資訊。

**

經過以上步驟,你的遠端直譯器就配置好了。這時,你就可以直接點選小三角按鈕,呼叫遠端伺服器上的python直譯器來執行程式碼。但是在此,你還需要看看下面的使用流程。如果你直接雙擊RemoteHost面板裡的檔案,然後點選小三角執行是會報錯的,可能會提示:

**
No such file or directory

使用流程

在配置中也參考了很多其他文章,但是有些文章還是沒有講清楚具體的流程,因此我把自己認為可能“正確”的流程記錄一下。

在介紹Deployment配置的時候,我們講到了Mapping選項卡的配置。這個配置將本地的一個路徑對映成了伺服器上的一個路徑,因此,在這個資料夾下的檔案和伺服器上的檔案是同步的,當然,需要你在本地修改的時候upload到伺服器或者設定自動upload。

在這裡,我的mapping配置如下:

local path Deployment path on server
E:\workspace\remotespace xxxx/workspacexhh

首先,我們在pycharm中通過 File > open... 來開啟一個新的專案,專案路徑就選擇上面的local path路徑。

在Project視窗中就可以看到打開了這個專案,當前這個專案還是空的,裡面什麼也沒有。

然後,我們開啟RemoteHost小視窗,在test.py檔案上右鍵,再選擇Download from Here,檔案就會下載到本地了。返回到Project小視窗,就可以看到test.py。其他的檔案類似,如果有父目錄,他會將父目錄也一起下載下來,所以檔案和路徑都會和伺服器保持一致。

這樣,你就可以在本地編輯test.py檔案。

在編輯完成後,你可以在檔案上右鍵或者直接在編輯區域右鍵,選擇upload to... 將檔案上傳到伺服器,這樣就可以更新伺服器端的程式碼了,並且保持了和原生代碼一致。

此時,點選綠色小三角執行程式碼,可以看到相應的輸出。但是看看控制檯的輸出,可以發現,python直譯器不是本地的,而跑的檔案也不是本地。

上面就是整個從伺服器下載檔案至本地,在本地修改檔案,將檔案上傳至伺服器,然後直接在本地執行的整個過程。

在這個過程中,也可以發現,經過這樣的配置,我們的程式碼現在一共有三個版本:一個是原生代碼,一個是伺服器上的程式碼,還有一個是RemoteHost面板中的程式碼(這個地方的程式碼如果直接編輯了,其實也可以提交到伺服器,但是不能直接執行)

所以,如果通過上面的配置進行遠端除錯的話,我認為大致流程應該是下面這樣:

  1. 在RemoteHost面板中,選中想要修改的程式碼,然後右鍵點選Download from here將內容下載至本地(這個本地是你在配置Deployment時設定的本地資料夾)。
  2. 在本地(這個本地是你在配置Deployment時設定的本地資料夾)修改你的程式碼,修改完成後在編輯區域或者檔名上右鍵,選擇upload to...來提交到伺服器。
  3. 在提交之後,你可以像普通呼叫本地直譯器一樣的直接執行本地的這個檔案(但其實執行的是伺服器的檔案)

在這裡,雖然RemoteHost裡的檔案可以直接編輯,但是並不建議這麼做,因為這裡編輯之後並不能直接執行。

轉載自:https://www.cnblogs.com/xiongmao-cpp/p/7856596.html