PyCharm實現高效遠程調試代碼 (薛剛強)
為方便Python代碼學習和項目開發,目前選擇專業的 IDE 開發工具 ,如 PyCham。針對個人使用的技巧做個筆記,分享給大家,有描述不恰當的,請多多指教!
一、PyCharm實現遠程調試代碼
1、打開PyCharm 工具, 點擊 Tools -> Deployment -> configuration,如下圖:
2、在新窗口添加遠程服務器,在左上角點擊 + 號,如下圖:
Name: 定義名字,如 Linux-Python36
Type:多個選項,推薦選擇SFTP。
3、配置遠端服務器的連接信息,如下圖:
3.1 設置服務器連接信息
Type: 選擇連接類型,SFTP
SFTP host:遠程Linux服務器ip地址
Port:端口
Root path:這里的路徑可以根據自己需要設定,如項目目錄結構如下:
/data/python/
├── class18
├── CMMD
└── test
如果上配置成功,我們僅能看到 /data/python 目錄下的子目錄。推薦配置為自己的項目目錄,方便代碼查找和定位。
User name:Linux服務器用戶
Auth type:支持三種類型:
- Password,密碼認證,簡單(推薦)
- Key pair(OpenSSH or PuTTY),私鑰認證
- OpenSSH config and authentication agent
勾選 Save Password,省去每次同步提示密碼。
然后點擊Advanced Options 按鈕,出現以下界面,
可以設置本地和遠程多久進行同步操作,默認300s。文檔后文會介紹自動同步。
3.2 設置本地和遠端服務器目錄
Local path:定義本地目錄,如 d:\pywork
Deployment path on server:自定Linux服務器遠端目錄,切記,這里是相對目錄!因為前面已經指定到了 /data/python目錄,
如果這里指定為/class18,那么配置成功后,將僅能看到 class18目錄下的代碼文件。根據自己需要設置即可!
Web path on server:web路徑暫時不需要設置,保持默認。
4、經過上面步驟的配置后,我們可以在PyCharm 界面的右邊查看遠端代碼,如下圖:
二、設置
Python版本信息
由於我們需要選擇不同的Python版本來執行代碼:
- Python27:如 /usr/bin/python
- Python36:如 /usr/local/python36/bin/python3
1、 選擇 File -> Settings -> Project pywork(根據個人實際pycharm項目名),出現界面如下:
2、默認Project interpreter 為空,點擊右邊按鈕,選擇 Add Remote,如下圖:
3、設置SSH 連接信息,用於使用遠程Linux服務器的 Python3 執行代碼,如下圖:
Python interpreter path:默認是/usr/bin/python(python2.7) ,根據個人需求,這里我定義為 /usr/local/python36/bin/python3。
4、點擊 OK 保存,如果信息如下圖,則表示我們Project Interpreter 設置完畢,可以執行代碼測試!
三、設置Terminal 運行的Python版本
1、File -> Settings -> Tools -> SSH Terminal,在 Deployment server 選擇Linux服務器的Python版本路徑。(配置已經存在,只要選擇即可)
2、在 PyCharm 點擊Python Console ,將出現Python 的交互信息窗口(包含版本信息等)
四、經過配置完成且生效后 ,我們可以在PyCharm 中進行代碼測試和學習了!
代碼同步記錄
五、登錄Linux環境
選擇 Tools -> Start SSH session,默認會開啟Linux ssh會話窗口,如下圖:
注意:如果配置了多個Linux 連接信息,那么會提示選擇。
提示:Linux會話窗口,可以移動到喜歡的位置。
六、使用 PyCharm 注意事項:
- 代碼修改,選擇左邊的本地目錄進行修改,保存后會自動同步到遠端
- 如果在遠程修改代碼則不能直接運行,會有報錯提示。
解決方案:
方法:在遠端列表位置點擊右鍵,選擇 download from here(修改會下載到本地目錄),參考下圖標記的步驟。
如果出現以下窗口,意思是提示我們遠程code覆蓋本地code,是否繼續。
<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">
