http://blog.csdn.net/ll641058431/article/details/53049453
使用PyCharm進行遠程開發和調試python
你是否常常要在Windows 7或MAC OS X上面開發Python或Web應用程序,可是它們最後須要在linux上面來運行呢? 咱們常常會碰到開發時沒有問題可是到了正式的Linux環境下面卻出現問題。那麼怎樣保證開發環境跟運行環境的一致呢?linux
一般有兩種方法解決。一種是使用PyCharm內置支持的Vagrant,這個教程能夠參考Vagrant開發環境配置。 不過很遺憾的是我本身在試驗過程當中啓動VirtualBox虛擬機時候總是報錯,暫時還沒解決,讀者能夠本身試着測試看行不行。 第二種方式就是經過PyCharm的遠程解釋器加上文件同步功能,實現本地編輯代碼->同步到服務器->經過遠程debug來調試測試程序。目前我選擇的是第二種,雖然比第一種更笨拙點。web
遠程調試的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,實現原理都基本相同,這裏採用PyCharm進行說明。django
遠程服務器的同步配置服務器
遠程服務器IP地址192.168.203.95,開啓ssh服務,安裝python版本2.7。我用一個在PyCharm裏面的core-python項目來作演示。ssh
首先咱們須要配置PyCharm通服務器的代碼同步,打開Tools | Deployment | Configuration性能
點擊左邊的「+」添加一個部署配置,輸入名字,類型選SFTP測試
肯定以後,再配置遠程服務器的ip、端口、用戶名和密碼。root path是文件上傳的根目錄,注意這個目錄必須用戶名有權限建立文件。spa
而後配置映射,local path是你的工程目錄,就是須要將本地這個目錄同步到服務器上面,我填的是項目根目錄。 Deploy path on server 這裏填寫相對於root path的目錄,下面那個web path不用管先.net
若是你還有一些文件或文件夾不想同步,那麼在配置對話框的第三個tab頁「Excluded path」裏面添加便可,可同時指定本地和遠程。
還有一個設置,打開Tools | Deployment | Options,將」Create Empty directories」打上勾,要是指定的文件夾不存在,會自動建立。
上傳和下載文件
有幾種方法能夠實現本地和遠程文件的同步,手動和當文件保存後自動觸發。這裏我選擇了手動,由於自動觸發好比影響性能,PyCharm會卡,感受不爽。
手動上傳方式很簡單,選擇須要同步的文件或文件夾,而後選擇 Tools | Deployment | Upload to sftp(這個是剛剛配置的部署名稱)
下載文件也是同樣,選擇 Tools | Deployment | Download from sftp
比較遠程和本地文件
有時候你並不肯定遠程和本地版本的徹底一致,須要去比較看看。PyCharm提供了對比視圖來爲你解決這個問題。
選擇Tools | Deployment | Browse Remote Host,打開遠程文件視圖,在右側窗口就能看到遠程主機中的文件
選擇一個你想要對比的文件夾,點擊右鍵->Sync with Local,打開同步對比窗口,使用左右箭頭來同步內容。
上面是服務器與本地對比,那麼本地文件通服務器對比,就先在PyCharm裏面選擇文件或文件夾,而後右鍵->Deployment->Sync with deployed to便可
PyCharm遠程調試
在PyCharm中進行遠程調試有兩種選擇:
使用遠程的解釋器
使用Python調試服務器
這裏簡單起見我只演示第一種,使用遠程解釋器,也就是使用服務器上面安裝的python解釋器。
配置遠程Python解釋器
選擇File | Settings,選擇Project | Project Interpreter,而後在右邊,點擊那個小齒輪設置,以下
而後點擊」Add Remote」,填寫主機的ssh配置
若是以前配置過SFTP的話就直接選「Deployment configuration」,而後選擇剛剛的模板名稱就能夠了,因爲我上面配置過就直接選模板, 這裏請仔細看個人Python解釋器是虛擬環境virtualenv,這個要在服務器上面先建立好虛擬環境。
開始調試
完成以後選擇這個遠程的解釋器做爲工程的解釋器便可,而後配置一個運行實例,打斷點調試。 這裏我以另一個django工程爲例來講明,名字爲zspace,由於用一個web工程來講明更具表明性。
選擇「Run/Debug Configuration」,添加一個「Django server」,而後配置像下面這樣寫請注意圖中標出的幾個點,具體什麼意思就不用多解釋了吧,^_^
而後你就能夠像本地調試同樣打斷點作調試了。這個步驟太簡單就不截圖了,記得修改源碼後同步到服務器繼續下一次的調試。