PyCharm 是一種 Python IDE,可以幫助程式員節約時間,提高生產效率。那麼具體如何使用呢?本文從 PyCharm 安裝到插件、外部工具、專業版功能等進行了一一介紹,希望能夠幫助到大家。 機器之心之前也沒系統地介紹過 PyCharm,怎樣配置環境、怎樣 DeBug、怎樣同步 GitHub ...
PyCharm 是一種 Python IDE,可以幫助程式員節約時間,提高生產效率。那麼具體如何使用呢?本文從 PyCharm 安裝到插件、外部工具、專業版功能等進行了一一介紹,希望能夠幫助到大家。
機器之心之前也沒系統地介紹過 PyCharm,怎樣配置環境、怎樣 DeBug、怎樣同步 GitHub 等等可能都是通過經驗或者摸索學會的。在本文中,我們並不會提供非常完善的指南,但是會介紹 PyCharm 最主要的一些能力,瞭解這些後,後面就需要我們在實踐中再具體學習了。
機器之心的讀者應該非常瞭解 JetBrains 開發的 PyCharm 了,它差不多是 Python 最常用的 IDE。PyCharm 可以為我們節省大量時間,它能夠管理代碼,並完成大量其他任務,如 debug 和可視化等。
本文將介紹:
- PyCharm 安裝
- 在 PyCharm 中寫代碼
- 在 PyCharm 中運行代碼
- 在 PyCharm 中進行代碼 debug 和測試
- 在 PyCharm 中編輯已有項目
- 在 PyCharm 中搜索和導航
- 在 PyCharm 中使用版本控制
- 在 PyCharm 中使用插件和外部工具
- 使用 PyCharm Professional 功能,如 Django 支持和科學模式
本文假設讀者熟悉 Python 開發,且電腦中已安裝某個版本的 Python。該教程將使用 Python 3.6 版本,屏幕截圖和 demo 均來自 macOS 系統。由於 PyCharm 可在所有主流平臺上運行,讀者在其他系統中會看到略微不同的 UI 元素,可能需要調整某些命令。
# PyCharm 安裝
本文將使用 PyCharm Community Edition 2019.1 版本,該版本免費且可在所有主流平臺上使用。只有最後一部分「PyCharm Professional 功能」使用的是 PyCharm Professional Edition 2019.1 版本。
推薦使用 JetBrains Toolbox App 安裝 PyCharm。使用該 App,你可以安裝不同的 JetBrains 產品或者同一產品的不同版本,併在必要的情況下更新、回滾和輕鬆刪除任意工具。你還可以在恰當的 IDE 及版本中快速打開任意項目。
Toolbox App 安裝指南,參見 JetBrains 官方文檔:https://www.jetbrains.com/help/pycharm/installation-guide.html#toolbox。
該 App 會根據你的操作系統提供合適的安裝說明。如果它無法無法準確識別系統,你可以在右上角的下拉列表中找到合適的系統。
安裝成功後,啟動該 app 並接受用戶協議。在 Tools 選項下,你可以看到一個可用產品列表。從中找到 PyCharm Community,並點擊 Install。
好啦,現在你的機器上已經安裝 PyCharm 了。如果不想使用 Toolbox app,你可以單獨安裝 PyCharm。
啟動 PyCharm,你將看到導入設置彈窗。PyCharm 會自動檢測出這是首次安裝,併為你選擇「Do not import settings」選項。點擊 OK,之後 PyCharm 會讓你選擇鍵盤映射(keymap scheme)。保留預設設置,點擊右下角的「Next: UI Themes」:
PyCharm 將詢問選擇深色模式 Darcula 還是淺色模式。你可以選擇自己喜歡的模式,並點擊「Next: Launcher Script」:
本教程將使用深色模式 Darcula。
在下一個頁面上,直接保留預設設置,並點擊「Next: Featured plugins」,這時 PyCharm 將展示可用插件列表。點擊「Start using PyCharm」,現在你可以寫代碼了!
# 在 PyCharm 中寫代碼
在 PyCharm 中,你可以在「項目」中執行任意操作。因此,首先你需要創建一個項目。
安裝和打開 PyCharm 後,你會看到歡迎頁面。點擊「Create New Project」,出現「New Project」彈窗:
指定項目位置,打開 Project Interpreter 列表,選擇創建新的項目解釋器或者使用已有的解釋器。選擇「New environment using」,打開其右方的下拉列表,選擇 Virtualenv、Pipenv 或 Conda。這些工具可以為不同項目單獨創建 Python 環境,從而分別保存不同項目所需的依賴項。
你可以選擇其中任意一個,本教程使用的是 Virtualenv。選擇後,指定環境位置,從 Python 解釋器列表中選擇要安裝在系統中的 base interpreter。通常,保持預設設置即可。下麵有兩個可選框:在新環境中繼承全局包環境、令當前環境可以用其它所有項目,兩個都不要選。
點擊右下角的「Create」,創建新項目:
屏幕上出現「Tip of the Day」彈窗,在每次啟動時 PyCharm 通過該彈窗提供 trick。關掉該彈窗。
現在我們可以開始新的 Python 程式了。如果你使用的是 Mac 系統,使用 Cmd+N 鍵;如果你使用的是 Windows 或 Linux 系統,使用 Alt+Ins 鍵。然後選擇 Python File。你也可以在菜單中選擇 File → New。將新文件命名為 guess_game.py 並點擊 OK。你將看到如下 PyCharm 視窗:
至於測試代碼,我們來快速寫一個簡單的猜謎游戲,即程式選擇一個數字讓用戶來猜,在每一次猜測時,程式將告訴用戶他猜的數字比神秘數字大還是小,用戶猜中數字時游戲結束。以下是該游戲的代碼:
直接鍵入上述代碼,而不是複製粘貼。你會看到如下畫面:
如上圖所示,PyCharm 提供 Intelligent Coding Assistance 功能,可以執行代碼補全、代碼檢查、錯誤高亮顯示和快速修複建議。比如鍵入 main 並點擊 tab 鍵,PyCharm 會自動補全整個 main 從句。
此外,如果你在條件句前忘記鍵入 if,在該句子最後增添.if 並點擊 Tab 鍵,PyCharm 將修複該 if 條件句。該用法同樣適用於 True.while。這即是 PyCharm 的 Postfix Completion 功能,它可以幫助用戶減少退格鍵使用次數。
# 在 PyCharm 中運行代碼
現在你已經編碼完成該游戲,可以運行了。
該游戲程式有三種運行方式:
1.在 Mac 系統中使用快捷鍵 Ctrl+Shift+R,在 Windows 或 Linux 系統中,使用快捷鍵 Ctrl+Shift+F10。
2.右鍵單擊背景,從菜單中選擇「Run 『guess_game』」。
3.由於該程式具備__main__ 從句,你可以點擊__main__ 從句左側的綠色小箭頭,選擇「Run 『guess_game』」。
使用以上任一方式運行該程式,視窗底部會出現終端面板(Terminal pane),顯示你的代碼輸出結果:
你可以玩一下這個游戲,看看自己能否猜中數字。(專業建議:從 50 開始猜。)
# 在 PyCharm 中進行代碼 debug
找到神秘數字了嗎?如果找到了,你可能會看到一些奇怪的東西:程式沒有列印出祝賀信息和顯示退出按鈕,而是重新開始了。這就是 bug 所在。要想發現程式重新開始的原因,你需要 debug。
首先,點擊第 8 行代碼左側的空白區域,設置斷點:
斷點即程式運行到這一行時會自動停止,你可以探索斷點處之後的代碼有什麼錯誤。接下來,從以下三種方式中選擇一種開始 debug:
1.在 Mac 系統中使用 Ctrl+Shift+D 鍵,在 Windows 或 Linux 系統中使用 Shift+Alt+F9 鍵。
2.右鍵單擊背景,選擇「Debug 『guess_game』」。
3.點擊__main__從句左側的綠色小箭頭,選擇「Debug 『guess_game』」。
之後,你將看到底部出現 Debug 視窗:
按照下列步驟執行程式 debug:
1.註意當前行被藍色高亮顯示。
2.Debug 視窗顯示 random_int 及其值。記錄該數字。(上圖中該數字為 85。)
3.點擊 F8 執行當前代碼行,並執行到下一行代碼。如有必要,你也可以使用 F7 跳轉到當前行內的函數。隨著你繼續執行語句,變數的變化將自動呈現在 Debugger 視窗。
4.註意 Debugger 標簽右側有一個 Console 標簽。Console 標簽和 Debugger 標簽相互獨立。你可以在 Console 中與程式進行交互,在 Debugger 中執行 debug 動作。
5.轉向 Console 標簽,進入猜測過程。
6.鍵入左側 Debugger 標簽中顯示的數字,點擊 Enter 鍵。
7.轉回 Debugger 標簽。
8.再次點擊 F8,計算 if 語句。註意現在你在第 14 行。為什麼不是第 11 行呢?因為第 10 行的 if 語句被計算為 False。那麼為什麼當你鍵入數字後它算出來為 False 了呢?
9.仔細看第 10 行,註意我們在對比 user_guess 和一個錯誤的項。我們應該對比用戶猜測的數字和 random_int,但此處我們對比的是 randint(從 random 包導入的函數)。
10.將 randint 更改為 random_int,按照同樣的步驟重新開始 debug。你會發現,這一次到達的是第 11 行,第 10 行算出來為 True:
恭喜你,bug 被修複了!
# 在 PyCharm 中進行代碼測試
不經單元測試的應用都不可靠。PyCharm 可以幫助你快速舒適地寫單元測試並運行。預設情況下,unittest 被用作測試運行器,而 PyCharm 還支持其他測試框架,如 pytest、nose、doctest、tox 和 trial。例如,你可以按照以下步驟為項目選擇 pytest 測試運行器:
1.打開 Settings/Preferences → Tools → Python Integrated Tools 設置對話框。
2.在預設測試運行器欄位中選擇 pytest。
3.點擊 OK 保存該設置。
本教程的示例將使用預設測試運行器 unittest。
在同一個項目中,創建文件 calculator.py,並將以下 Calculator 類放入該文件:
PyCharm 使得為已有代碼創建測試變得輕而易舉。打開 calculator.py 文件,執行以下步驟中的任意一個:
- 在 Mac 系統中使用 Shift+Cmd+T 鍵,在 Windows 或 Linux 系統中使用 Ctrl+Shift+T。
- 右鍵單擊該類的背景,選擇「Go To and Test」。
- 在主菜單中嗎,選擇 Navigate → Test。
選擇「Create New Test…」,得到以下視窗:
Target directory、Test file name 和 Test class name 這三項均保留預設設置。選中上圖中兩種需要測試的方法並點擊 OK。好了!PyCharm 自動創建文件 test_calculator.py,併在其中創建了以下 stub test:
使用以下方法中的任意一個運行測試:
- 在 Mac 系統中使用 Ctrl+R 鍵,在 Windows 或 Linux 系統中使用 Shift+F10 鍵。
- 右鍵單擊背景,選擇「Run 『Unittests for test_calculator.py』」。
- 點擊測試類名稱左側的綠色小箭頭,選擇「Run 『Unittests for test_calculator.py』」。
你將看到底部出現測試視窗,所有測試均失敗:
註意,左側是測試結果的層次結構,右側是終端的輸出。現在,將代碼更改成以下代碼,實現 test_add:
重新運行測試,你會看到一個測試通過了,另一個則失敗。按照如下操作探索不同選項,來展示已通過測試和被忽略測試,按照字母順序對測試進行排序,以及按照時長對測試進行排序:
註意,上圖中的 sleep(0.1) 方法的作用是使其中一個測試變慢,以便按時長對測試進行排序。
# 在 PyCharm 中編輯已有項目
單文件項目非常適合作為示例,但你通常需要處理較大的項目。這部分將介紹如何使用 PyCharm 處理較大項目。
為了探索 PyCharm 以項目為中心的特征,你將使用 Alcazar web 框架(該框架用於學習目的)。在本地複製該 repo(地址:https://realpython.com/optins/view/alcazar-web-framework/)。
當你在本地已有項目時,使用以下方法中的任意一個在 PyCharm 中打開項目:
在主菜單中點擊 File → Open。
在歡迎頁面點擊 Open。
之後,在電腦中找到包含該項目的文件夾,並打開。
如果該項目包含虛擬環境,PyCharm 將自動使用該虛擬環境,並將它作為項目解釋器。
如果你需要配置不同的虛擬環境 virtualenv,在 Mac 上打開 Preferences,或在 Windows 或 Linux 系統中使用 Ctrl+Alt+S 打開 Settings,找到 Project: ProjectName。打開下拉列表,選擇 Project Interpreter:
從下拉列表中選擇 virtualenv。如果沒有要選擇的項,則點擊下拉列表右方的設置按鈕選擇 Add…。其餘步驟和創建新項目的步驟相同。
# 在 PyCharm 中搜索和導航
在大項目中,我們很難記住每個事物的位置,因此快速導航和搜索非常重要。PyCharm 可以提供這些功能。接下來,我們使用上一節中打開的項目,實踐以下快捷鍵:
- 在當前文件中搜索代碼段:在 Mac 系統中使用 Cmd+F 鍵,在 Windows 或 Linux 系統中使用 Ctrl+F 鍵。
- 在整個項目中搜索代碼段:在 Mac 系統中使用 Cmd+Shift+F 鍵,在 Windows 或 Linux 系統中使用 Ctrl+Shift+F 鍵。
- 搜索類:在 Mac 系統中使用 Cmd+O 鍵,在 Windows 或 Linux 系統中使用 Ctrl+N 鍵。
- 搜索文件:在 Mac 系統中使用 Cmd+Shift+O 鍵,在 Windows 或 Linux 系統中使用 Ctrl+Shift+N 鍵。
- 如果你不知道要搜索的是文件、類還是代碼段,則搜索全部:按兩次 Shift 鍵。
導航可使用以下快捷鍵:
- 前往變數的聲明:在 Mac 系統中使用 Cmd 鍵,在 Windows 或 Linux 系統中使用 Ctrl 鍵,然後單擊變數。
- 尋找類、方法或文件的用法:使用 Alt+F7 鍵。
- 查看近期更改:使用 Shift+Alt+C 鍵,或者在主菜單中點擊 View → Recent Changes。
- 查看近期文件:在 Mac 系統中使用 Cmd+E 鍵,在 Windows 或 Linux 系統中使用 Ctrl+E 鍵,或者在主菜單中點擊 View → Recent Files。
- 多次跳轉後在導航歷史中前進和後退:在 Mac 系統中使用 Cmd+[ / Cmd+] 鍵,在 Windows 或 Linux 系統中使用 Ctrl+Alt+Left / Ctrl+Alt+Right 鍵。
更多細節,參見官方文檔:https://www.jetbrains.com/help/pycharm/tutorial-exploring-navigation-and-search.html。
# PyCharm 中的版本控制
版本控制系統(如 Git 和 Mercurial)是現代軟體開發世界中最重要的工具之一。因此,IDE 必須支持版本控制。PyCharm 在這方面做得很好,它集成了大量流行的版本控制系統,如 Git(和 Github (https://github.com/))、Mercurial、Perforce 和 Subversion。
註:以下示例中使用的版本控制系統為 Git。
配置版本控制系統(VCS)
要想實現 VCS 集成,你需要在頂部菜單點擊 VCS → VCS Operations Popup…,或者在 Mac 系統中使用 Ctrl+V 鍵,在 Windows 或 Linux 系統中使用 Alt+` 鍵。選擇 Enable Version Control Integration…,你將看到以下視窗:
從下拉列表中選擇 Git,點擊 OK,這樣你就為項目設置好了 VCS。(註意,如果你打開的已有項目已經具備版本控制系統,PyCharm 將會發現並自動使用該版本控制系統。)
這時如果你前往 VCS Operations Popup…,你會發現一個不同的彈窗,它具備選項 git add、git stash、git branch、git commit、git push 等等:
如果你找不到所需要的選項,你可以在頂部菜單中點擊 VCS,選擇 Git,在這裡你可以創建和查看 pull request。
提交和衝突處理
這是 PyCharm 中 VCS 集成的兩大特征,我個人經常使用並且非常喜歡。假如你完成了工作,打算提交,前往 VCS → VCS Operations Popup… → Commit…,或者在 Mac 系統中使用 Cmd+K 鍵,在 Windows 或 Linux 系統中使用 Ctrl+K 鍵。你將看到如下視窗:
在該視窗中,你可以:
- 選擇要提交的文件
- 寫下提交信息
- 在提交前執行各項檢查
- 查看更改
- 點擊右下角 Commit 按鈕旁邊的箭頭,選擇 Commit and Push…,從而一次性完成提交和 push。
是不是感覺很神奇很迅速?特別是如果你以前經常通過命令行手動執行這些任務時。
團隊合作中會出現合併衝突(merge conflict)。當一個人對你正在處理的文件提交更改時,你們二人更改了同一行導致更改重疊,這時 VCS 無法決定選擇你的更改還是隊友的更改。那麼你可以使用以下箭頭和符號來解決這個問題:
看起來很奇怪,我們很難分辨應該刪除哪些更改、保留哪些更改。不要怕,PyCharm 來了!它可以用更好、更簡潔的方法解決衝突。在頂部菜單中前往 VCS,選擇 Git,然後選擇 Resolve conflicts…。選擇存在衝突的文件,點擊 Merge,出現以下視窗:
在左側列中,你可以查看自己做的更改。在右側列中,可以查看隊友做的更改。而中間列則顯示結果。存在衝突的代碼行被高亮顯示,你可以在它們旁邊看到 X 和 >>/<<。點擊箭頭表示接受更改,點擊 X 則表示拒絕更改。解決所有衝突後,點擊 Apply 按鈕:
在上圖中,對於第一個衝突行,作者選擇拒絕自己的更改,接受隊友的更改。而在第二個衝突行中,作者接受了自己的更改,拒絕了隊友的更改。
使用 PyCharm 中的 VCS 集成還可以執行很多操作。詳情參見 https://www.jetbrains.com/help/pycharm/version-control-integration.html。
# 在 PyCharm 中使用插件和外部工具
在 PyCharm 中你可以找到開發所需的幾乎所有功能。如果沒找到,那麼很可能存在一個插件,向 PyCharm 提供你需要的功能。例如,它們可以:
- 添加多語言和多框架支持
- 使用快捷鍵提示(shortcut hint)、文件監視器(file watcher)等提升你的生產效率
- 利用代碼練習,幫助你學習新的編程語言
例如,IdeaVim 插件向 PyCharm 添加 Vim 模擬。如果你喜歡 Vim,這個插件可以實現不錯的結合。
Material Theme UI 插件可將 PyCharm 的外觀改變為 Material Design 的外觀:
Vue.js 插件使 PyCharm 支持 Vue.js 項目。Markdown 插件使得在 IDE 內可以編輯 Markdown 文件,並實時預覽渲染後的 HTML。
在 Mac 系統上點擊 Preferences → Plugins,在 Windows 或 Linux 系統中點擊 Settings → Plugins,你可以在 Marketplace 標簽下找到和安裝所有可用插件:
如果仍然沒找到所需插件,你甚至可以自己開發一個。
如果你找不到合適的插件,又不想自己開發,因為 PyPI 上有可用的包,你可以將這個包作為外部工具添加到 PyCharm。以代碼分析器 Flake8 為例。
首先,在所選 Terminal app 中鍵入 pip install flake8,從而在虛擬環境中安裝 Flake8。或者也可以使用 PyCharm 集成的 Terminal: