PyCharm配置遠程python解釋器
使用場景及簡介
首先聲明,本文的配置方法肯定是親測可行的,如果出現什么問題,歡迎留言給我。
雖然對於個人日常使用來說,Windows更加友好,但深度學習工作常需要在服務端(linux)環境中跑模型代碼。對於新手來說,在學習ML/DL時,常常需要將本地寫的代碼傳到GPU服務器中,然后在服務器上運行。這種方式需要先在本地寫好代碼,然后通過WinSCP這樣的文件傳輸工具將寫好的代碼文件傳到服務器,再通過ssh工具(如Xshell)遠程連接服務器,執行相應的python腳本。這樣的方式十分繁瑣,效率很低。下面來介紹一下如何為本地PyCharm配置遠程解釋器,這樣就可以直接在本地的PyCharm中利用遠程服務器的python解釋器運行代碼啦!再也不用忍受在黑框框中調試代碼的痛苦了。(手動捂臉笑)
PyCharm配置遠程python解釋器可以實現:
- 可以指定本地某目錄和服務器某工作目錄對應起來,可以直接在本地機子上修改服務器工作目錄下面的代碼文件,即可以直接在IDE(如PyCharm)中修改服務端的代碼,保持兩處的代碼同步修改。
- 為PyCharm配置遠程python解釋器,可以在本地的IDE中運行服務端的代碼,並且可以在IDE中查看運行結果,不再需要shh連接到遠程服務器執行代碼。
- 為PyCharm配置遠程python解釋器時,同樣可以指定某一conda虛擬環境,很方便呀。
配置過程
本地及服務器環境
- 本地:Windows 10 + PyCharm 2020專業版
- 服務器:Ubuntu 16.04 + Anacononda + 可以使用ssh進行遠程登陸
配置Deployment
首先,在pycharm的菜單欄依次找到:Tools > Deployment > Configuration.
點擊左上角的加號,選擇SFTP,新建一個server,例如這里我們取名為“dogVScat”。
然后可以看到如下的配置頁面,具體各配置在圖片中有說明:
然后打開Deployment的Mapping選項卡:
注:上面兩張圖畫綠色下划線的地方,我想表達的是:我是將本地的
G:\_Jeffrey\OneDrive\_Jeffrey\ResearchPhD\001 ResNotes\012 SCI_Res_Project\003 single_DRL_intersection_gymsumo\gym-sumo-DRL\intersectionDDPG目錄和遠程服務器的
/home/node-3-3/Jeffrey/dogvscat目錄連接起來,要實現這兩個目錄下的代碼同步。
這樣,Deployment的配置就完成了。這個配置完成了之后,其實是相當於配置了一個ftp工具可以連接到服務器上,從而可以查看和修改服務器上的文件。你可以通過Tools > Deplotment > Browse Remote Host來打開相應的RemoteHost面板,這個面板顯示的就是服務器上的文件,顯示的范圍是你在Deployment中的Connection選項卡下配置的Root path路徑下的文件及文件夾。如下圖右側所示。
你可以直接在RemoteHost面板里雙擊某個文件並且直接進行編輯。雙擊某個文件后你可以看到編輯區域的頂部有一個橫條,並且橫條的右邊有三各按鈕,分別是比較,撤銷和上傳操作。你在這里面編輯文件之后,可以直接點擊上傳按鈕,就會提交到服務器了。但是其實不推薦直接在這里修改代碼,后面的使用流程會說到。
配置遠程python解釋器
這里主要講的是如何配置遠程python解釋器。
首先,通過File > Settings,打開設置選項卡。
在設置選項卡里,點擊"Project:項目名"這個按鈕,在展開的小項里再點擊Project Interpreter,右邊就會變成Interpreter的配置頁面。
點擊Interpreter配置頁面的小此輪按鈕,然后再選擇Add或Add Remote。
在Add Python Interpretr窗口選擇SHH Interpreter,選中Existing server configuration,在下拉框中選擇我們剛才新建的dogVScat server。
點擊next之后,出現如下對話框,按圖示填寫。

填寫無誤后,點Finish,大功告成,如下所示:
經過以上步驟,你的遠程解釋器就配置好了。這時,你就可以直接點擊小三角按鈕,調用遠程服務器上的python解釋器來運行代碼了。
總結
通過上面的配置進行遠程調試的話,我認為大致流程應該是下面這樣:
- 在RemoteHost面板中,選中想要修改的代碼,然后右鍵點擊Download from here將內容下載至本地(這個本地是你在配置Deployment時設置的本地文件夾)。這一步一般沒啥用。
- 在本地(這個本地是你在配置Deployment時設置的本地文件夾)修改你的代碼,修改完成后在編輯區域或者文件名上右鍵,選擇Deployment,再選擇upload to…來上傳到服務器。(其實經過上面的配置后,在ctrl+s保存本地代碼的時候會自動同步上傳代碼)
- 在提交之后,你可以像普通調用本地解釋器一樣的直接運行本地的這個文件(但其實運行的是服務器的文件)
在這里,雖然RemoteHost里的文件可以直接編輯,但是並不建議這么做,因為這里編輯之后並不能直接運行。
注:配置方式不只一種,還有很多其它的配置方式也可以達到同樣的目的,同時還有一些細節沒有具體展開,有需要請自行google或參考References。
有問題歡迎交流~
References
- https://www.cnblogs.com/xiongmao-cpp/p/7856596.html
- https://www.xncoding.com/2016/05/26/python/pycharm-remote.html
個人調試
VPN需要掛,OpenVPN GUI
當前修改了遠程服務器的地址可行。
其他需要參考可視化的教程:
使用MobaXterm做x shell服務,新建session后,使用命令echo $DISPLAY,將得到的結果例如localhost:11.0添加到pycharm的環境變量中。[如果不添加,那么將顯示在遠程服務器上,也挺好]
-
當遇到無法識別環境變量時,在edit configuration處添加:
SUMO_HOME /home/ubuntu/data/sumo PYTHONPATH /home/ubuntu/data/sumo/tools: -
【小問題大麻煩】其實前面的可以不用管,直接去添加python解釋器就可以了,但是千萬要注意的是每個解釋器的pycharm_helpers的路徑要不同,否則會沖突一直連不上ssh,此外要是出現斷聯情況,重新連接vpn

-
總結:其實就是在win10上寫代碼,同步到服務器上,所以的地址,庫等都是服務器上的

