<wbr id="juant"></wbr>
  • <wbr id="juant"></wbr>
    更多課程 選擇中心


    Python培訓

    400-111-8989

    python使用PyCharm進行遠程開發和調試教程

    • 發布:學習與分享
    • 來源:Python互動中心
    • 時間:2017-11-30 14:41

    背景描述

    有時候Python應用的代碼在本地開發環境運行十分正常,但是放到線上以后卻出現了莫名其妙的異常,經過再三排查以后還是找不到問題原因,于是就在想,要是可以在服務器環境中進行單步跟蹤調試就好了。

    然而,在服務器系統上安裝一個IDE肯定是不現實的;通過SSH遠程到服務器端,采用pdb進行調試雖然可行,但是操作還是較為繁瑣,而且也不夠直觀。

    那么,是否可以將開發環境中的IDE與服務器環境相連,實現利用開發環境的IDE調試服務器環境中運行的程序呢? 答案是肯定的,這就是遠程調試(Remote Debug)。

    遠程調試的工作原理

    遠程調試的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,實現原理都基本相同,這里采用PyCharm進行說明。

    在遠程調試的模式下,PyCharm(IDE)扮演服務端(Server)的角色,而運行在遠程計算機上的應用程序扮演客戶端(Client)的角色。正因如此,進行遠程調試時,需要先在本地開發環境中設定端口并啟動IDE,IDE會對設定的端口開始監聽,等待客戶端的連接請求;那遠程計算機中的應用程序又是怎樣與IDE建立通訊連接的呢?

    針對遠程調試功能,PyCharm提供了pydevd模塊,該模塊以pycharm-debug.egg的形式存在于PyCharm的安裝路徑中。遠程計算機安裝該庫文件后,然后就可以調用pydevd.settrace方法,該方法會指定IDE所在機器的IP地址和監聽的端口號,用于與IDE建立連接;建立連接后,便可在IDE中對遠程在遠程計算機中的程序進行單步調試。

    使用PyCharm進行遠程開發和調試

    你是否經常要在Windows 7或MAC OS X上面開發Python或Web應用程序,但是它們最后需要在linux上面來運行呢? 我們經常會碰到開發時沒有問題但是到了正式的Linux環境下面卻出現問題。那么怎樣保證開發環境跟運行環境的一致呢?

    通常有兩種方法解決。一種是使用PyCharm內置支持的Vagrant,這個教程可以參考Vagrant開發環境配置。 不過很遺憾的是我自己在試驗過程中啟動VirtualBox虛擬機時候老是報錯,暫時還沒解決,讀者可以自己試著測試看行不行。 第二種方式就是通過PyCharm的遠程解釋器加上文件同步功能,實現本地編輯代碼->同步到服務器->通過遠程debug來調試測試程序。目前我選擇的是第二種,雖然比第一種更笨拙點。

    遠程調試的功能在Eclipse、IntelliJ IDEA等大型IDE中均有支持,實現原理都基本相同,這里采用PyCharm進行說明。

    遠程服務器的同步配置

    遠程服務器IP地址192.168.203.95,開啟ssh服務,安裝python版本2.7。我用一個在PyCharm里面的core-python項目來做演示。

    首先我們需要配置PyCharm通服務器的代碼同步,打開Tools | Deployment | Configuration

    點擊左邊的“+”添加一個部署配置,輸入名字,類型選SFTP

    確定之后,再配置遠程服務器的ip、端口、用戶名和密碼。root path是文件上傳的根目錄,注意這個目錄必須用戶名有權限創建文件。

    然后配置映射,local path是你的工程目錄,就是需要將本地這個目錄同步到服務器上面,我填的是項目根目錄。 Deploy path on server 這里填寫相對于root path的目錄,下面那個web path不用管先

    如果你還有一些文件或文件夾不想同步,那么在配置對話框的第三個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”,然后配置像下面這樣寫

    請注意圖中標出的幾個點,具體什么意思就不用多解釋了吧,^_^

    然后你就可以像本地調試一樣打斷點做調試了。這個步驟太簡單就不截圖了,記得修改源碼后同步到服務器繼續下一次的調試。

    以上就是本文的全部內容,希望對大家的學習有所幫助

    本文內容轉載自網絡,本著分享與傳播的原則,版權歸原作者所有,如有侵權請聯系我們進行刪除!

    預約申請免費試聽課

    填寫下面表單即可預約申請免費試聽!怕錢不夠?可就業掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業?一地學習,可全國推薦就業!

    上一篇:用Python處理ZIP壓縮包教程
    下一篇:Python--共享引用教程

    2021年Python面試題及答案匯總詳解

    python數據分析,你需要這些工具

    Python培訓講解二叉樹的三種深度

    Python培訓:如何實現窮舉搜索?

    • 掃碼領取資料

      回復關鍵字:視頻資料

      免費領取 達內課程視頻學習資料

    • 視頻學習QQ群

      添加QQ群:1143617948

      免費領取達內課程視頻學習資料

    Copyright ? 2021 Tedu.cn All Rights Reserved 京ICP備08000853號-56 京公網安備 11010802029508號 達內時代科技集團有限公司 版權所有

    選擇城市和中心
    黑龍江省

    吉林省

    河北省

    湖南省

    貴州省

    云南省

    廣西省

    海南省

    天天日天天射天天干天天伊|奇米电影|奇米网_奇米首页|奇米首页 百度 好搜 搜狗
    <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>