最近在學(xué)習(xí)機(jī)器學(xué)習(xí)的過(guò)程中,常常需要將本地寫(xiě)的代碼傳到GPU服務(wù)器中,然后在服務(wù)器上運(yùn)行。之前的做法一直是先在本地寫(xiě)好代碼,然后通過(guò)FileZilla這樣的文件傳輸工具來(lái)將寫(xiě)好的文件傳到服務(wù)器,再通過(guò)ssh工具遠(yuǎn)程連接到服務(wù)器,執(zhí)行相應(yīng)的python腳本。這樣的方式十分繁瑣,效率很低。今天聽(tīng)到朋友提到了配置遠(yuǎn)程解釋器
使用場(chǎng)景
先說(shuō)說(shuō)自己的使用場(chǎng)景,我是在什么情況下,需要將IDE配置成這樣的環(huán)境來(lái)方便我的工作。
首先,我需要在本地機(jī)子上寫(xiě)python代碼,但是因?yàn)槭菣C(jī)器學(xué)習(xí)相關(guān)的一些代碼,有時(shí)候本機(jī)跑可能會(huì)很慢,或者根本跑不下來(lái)。而此時(shí),我還有一臺(tái)可用的服務(wù)器,上面配置了相應(yīng)的python3環(huán)境和相應(yīng)的機(jī)器學(xué)習(xí)庫(kù),比如tensorflow,keras,tflearn等等。因此通常需要將本地寫(xiě)好的代碼上傳到服務(wù)器上,在服務(wù)器上運(yùn)行。由于代碼能力渣渣,所以常常需要反復(fù)修改代碼,而直接在服務(wù)器上修改代碼不是很方便。因此,我希望可以像下面一樣操作:
- 我在服務(wù)器上有一個(gè)工作目錄,我希望可以直接在我本地機(jī)子上修改工作目錄下面的代碼文件
- 因?yàn)镻ycharm可以配置遠(yuǎn)程python解釋器,所以我希望可以直接在本地的機(jī)子上運(yùn)行修改的代碼,并且直接在本地機(jī)子查看運(yùn)行的結(jié)果,而不用ssh到遠(yuǎn)程服務(wù)器在執(zhí)行代碼。
- 具體來(lái)說(shuō)就是,我可以直接在本地上編寫(xiě)代碼,然后直接點(diǎn)擊pycharm的綠色小三角執(zhí)行代碼,并且這個(gè)執(zhí)行是由遠(yuǎn)程服務(wù)器的python解釋器執(zhí)行的,而不是在我本地機(jī)子上配置的python環(huán)境下執(zhí)行。
配置過(guò)程
本機(jī)環(huán)境
操作系統(tǒng):win10
IDE:Pycharm
遠(yuǎn)程服務(wù)器
操作系統(tǒng):ubuntu14.04
配置了ssh,可以使用ssh進(jìn)行遠(yuǎn)程登陸
配置Deployment
首先,在pycharm的菜單欄依次找到:Tools > Deployment > Configuration.
然后可以看到如下的配置頁(yè)面,具體各配置在圖片中說(shuō)明:
然后打開(kāi)Deployment的Mapping選項(xiàng)卡:
這樣,Deployment的配置就完成了。這個(gè)配置完成了之后,其實(shí)是相當(dāng)于配置了一個(gè)ftp工具可以連接到服務(wù)器上,從而可以查看和修改服務(wù)器上的文件。你可以通過(guò)Tools > Deplotment > Browse Remote Host來(lái)打開(kāi)相應(yīng)的RemoteHost面板,這個(gè)面板顯示的就是服務(wù)器上的文件,顯示的范圍是你在Deployment中的Connection選項(xiàng)卡下配置的Root path路徑下的文件及文件夾。
你可以直接在RemoteHost面板里雙擊某個(gè)文件并且直接進(jìn)行編輯。雙擊某個(gè)文件后你可以看到編輯區(qū)域的頂部有一個(gè)橫條,并且橫條的右邊有三各按鈕,分別是比較,撤銷和上傳操作。你在這里面編輯文件之后,可以直接點(diǎn)擊上傳按鈕,就會(huì)提交到服務(wù)器了。但是其實(shí)不推薦直接在這里修改代碼,后面的使用流程會(huì)說(shuō)到。
以上的配置,就可以直接在PyCharm里看到服務(wù)器上的文件,我感覺(jué)就像是直接在IDE里集成了一個(gè)FTP傳輸工具。
配置遠(yuǎn)程python解釋器
這里主要講的是如何配置遠(yuǎn)程python解釋器。
首先,通過(guò)File > Settings,打開(kāi)設(shè)置選項(xiàng)卡。
在設(shè)置選項(xiàng)卡里,點(diǎn)擊"Project:項(xiàng)目名"這個(gè)按鈕,在展開(kāi)的小項(xiàng)里再點(diǎn)擊Project Interpreter,右邊就會(huì)變成Interpreter的配置頁(yè)面。
點(diǎn)擊Interpreter配置頁(yè)面的小此輪按鈕,然后再選擇add Remote。
彈出如下彈窗并配置相應(yīng)的信息。
經(jīng)過(guò)以上步驟,你的遠(yuǎn)程解釋器就配置好了。這時(shí),你就可以直接點(diǎn)擊小三角按鈕,調(diào)用遠(yuǎn)程服務(wù)器上的python解釋器來(lái)運(yùn)行代碼。但是在此,你還需要看看下面的使用流程。如果你直接雙擊RemoteHost面板里的文件,然后點(diǎn)擊小三角運(yùn)行是會(huì)報(bào)錯(cuò)的,可能會(huì)提示:
No such file or directory
在配置中也參考了很多其他文章,但是有些文章還是沒(méi)有講清楚具體的流程,因此我把自己認(rèn)為可能“正確”的流程記錄一下。
在介紹Deployment配置的時(shí)候,我們講到了Mapping選項(xiàng)卡的配置。這個(gè)配置將本地的一個(gè)路徑映射成了服務(wù)器上的一個(gè)路徑,因此,在這個(gè)文件夾下的文件和服務(wù)器上的文件是同步的,當(dāng)然,需要你在本地修改的時(shí)候upload到服務(wù)器或者設(shè)置自動(dòng)upload。
在這里,我的mapping配置如下:
| local path | Deployment path on server |
|---|---|
| E:\workspace\remotespace | xxxx/workspacexhh |
首先,我們?cè)趐ycharm中通過(guò) File > open... 來(lái)打開(kāi)一個(gè)新的項(xiàng)目,項(xiàng)目路徑就選擇上面的local path路徑。
在Project窗口中就可以看到打開(kāi)了這個(gè)項(xiàng)目,當(dāng)前這個(gè)項(xiàng)目還是空的,里面什么也沒(méi)有。
然后,我們打開(kāi)RemoteHost小窗口,在test.py文件上右鍵,再選擇Download from Here,文件就會(huì)下載到本地了。返回到Project小窗口,就可以看到test.py。其他的文件類似,如果有父目錄,他會(huì)將父目錄也一起下載下來(lái),所以文件和路徑都會(huì)和服務(wù)器保持一致。
這樣,你就可以在本地編輯test.py文件。
在編輯完成后,你可以在文件上右鍵或者直接在編輯區(qū)域右鍵,選擇upload to... 將文件上傳到服務(wù)器,這樣就可以更新服務(wù)器端的代碼了,并且保持了和本地代碼一致。
此時(shí),點(diǎn)擊綠色小三角運(yùn)行代碼,可以看到相應(yīng)的輸出。但是看看控制臺(tái)的輸出,可以發(fā)現(xiàn),python解釋器不是本地的,而跑的文件也不是本地。
上面就是整個(gè)從服務(wù)器下載文件至本地,在本地修改文件,將文件上傳至服務(wù)器,然后直接在本地運(yùn)行的整個(gè)過(guò)程。
在這個(gè)過(guò)程中,也可以發(fā)現(xiàn),經(jīng)過(guò)這樣的配置,我們的代碼現(xiàn)在一共有三個(gè)版本:一個(gè)是本地代碼,一個(gè)是服務(wù)器上的代碼,還有一個(gè)是RemoteHost面板中的代碼(這個(gè)地方的代碼如果直接編輯了,其實(shí)也可以提交到服務(wù)器,但是不能直接運(yùn)行)
所以,如果通過(guò)上面的配置進(jìn)行遠(yuǎn)程調(diào)試的話,我認(rèn)為大致流程應(yīng)該是下面這樣:
- 在RemoteHost面板中,選中想要修改的代碼,然后右鍵點(diǎn)擊Download from here將內(nèi)容下載至本地(這個(gè)本地是你在配置Deployment時(shí)設(shè)置的本地文件夾)。
- 在本地(這個(gè)本地是你在配置Deployment時(shí)設(shè)置的本地文件夾)修改你的代碼,修改完成后在編輯區(qū)域或者文件名上右鍵,選擇upload to...來(lái)提交到服務(wù)器。
- 在提交之后,你可以像普通調(diào)用本地解釋器一樣的直接運(yùn)行本地的這個(gè)文件(但其實(shí)運(yùn)行的是服務(wù)器的文件)
在這里,雖然RemoteHost里的文件可以直接編輯,但是并不建議這么做,因?yàn)檫@里編輯之后并不能直接運(yùn)行。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

