Python web 開發工具箱

工欲善其事,必先利其器(裝逼工具)

  • Pycharm。專業的python IDE,功能很強大,特別喜歡它的代碼merge工具,不想被編輯器折騰死的推薦直接使用,五星級推薦。(除了內存佔用大點)
  • vim。本人比較喜歡的編輯器,平常寫代碼、博客、文檔等使用頻繁,配上各種插件編輯效率很高。vimawesome.com/ 可以到這個上面安裝排名靠前的那些插件,能夠大大提高編輯效率,部分替代IDE(本人裝了六七十個插件,滿足各種變態的編輯需求)。其他優秀的編輯器sublime,atom,vscode,emacs等不熟,根據個人喜好來吧,不過vim等終端友好的編輯器方便在伺服器上直接寫代碼,缺點就是補全和跳轉支持不完善,也可以 Pycharm 和 vim插件配合。(在google搜索python awesome等可以在github上搜索到一些awesome項目,總結了該語言很多技術工具)。網上還有很多牛人開源了自己的 dotfiles,我們可以參考下別人的 vimrc 配置。
  • meld/vimdiff: 文本比對工具。
  • tmux。比screen好用,可以用來分屏,託管進程等,伺服器端必備神器,ubuntu下基本就不用使用terminator之類的分屏工具了。最近看youtube視頻還發現有人在伺服器上使用tmux和vim結對編程,兩個人同時attach到一個session里,基情四射。
  • oh-my-zsh。替代原生的bash shell,提供了好多方便的特性和漂亮主題。linux/mac下vim+tmux+zsh簡直是絕配,甚至可以直接在伺服器上方便地擼代碼,跟本地開發體驗沒區別。
  • item2(mac)。替代原生的終端。
  • brew(mac)。類似ubuntu下的apt-get,可以方便安轉各種軟體和工具。
  • Alfred(mac): mac 下一款功能強大的工具,不過我一般只用它快速打開軟體。
  • Dash(mac): 強悍的文檔查詢工具。
  • Karabiner-Elements(mac): 改鍵工具 github.com/tekezo/Karab
  • autojump。方便在命令行里來回跳轉目錄。
  • gitx(mac):方便查看代碼提交歷史,便於了解整個代碼倉庫是怎樣一步步構建的。gitx.frim.nl/user_manua
  • tig: text-mode interface for git. 喜歡命令行的可以嘗試下。 github.com/jonas/tig
  • tldr: 更好的man手冊
  • EditorConfig: editorconfig.org/ 用來統一編輯器配置

一定要有個趁手的開發工具(它甚至比你女朋友都重要),不管是IDE還是編輯器,你程序員生涯的小半輩子都在和它打交道(提升編輯效率的秘訣在於多用鍵盤快捷鍵,少用滑鼠,以及可以高度定製的編輯器)。甚至編程字體你都要謹慎選取,比如字體可以很好區分1, l, I, 0, O, S, 5等易混淆字元,給瀏覽代碼帶來便利。如果使用的是mac可以google下 "Mac OS X development environment setup",有驚喜呦。最後注意你用編輯器的話一定要用 pylint,pep8 檢測插件,否則不遵守規範可能會導致用 IDE 打開項目後一堆警告(別人會想問候你祖宗的)。

  • 《使用vim+tmux+zsh+autojump高效工作》

代碼輔助和檢測工具

  • pylint: 代碼靜態檢測工具,請務必集成在你的編輯器或者IDE里(推薦)。能幫你少犯很多錯誤,動態語言寫項目要十分謹慎,非常容易犯錯。或者在CI加上 hook 每次 push 代碼的時候檢測。
  • pep8: python代碼風格檢測工具(推薦)。懶人可以試試 autopep8 工具,自動格式化。所有人的代碼都過一遍 pylint 和 autopep8(放寬行長度) 看起來就比較一致了。
  • autopep8/yapf: python 代碼自動格式化工具,懶人必備。都可以集成到 vim 里,比如使用 Plugin Chiel92/vim-autoformat 工具一鍵格式化。不過注意有時會無法正確處理多重縮進,這個比較危險,代碼邏輯都變了,還是自己寫代碼的時候注意下格式。
  • prospector: 集成了眾多python代碼檢測工具
  • mccabe: 圈複雜度檢測工具。McCabe 是一種度量程序複雜度的方法,如果單個子程序複雜度過高,或許就需要拆分邏輯提高程序的易讀性。
  • pyflakes
  • bandit: 用於Python代碼的安全性分析,openstack 的項目 github.com/openstack/ba
  • rope,可以用來重構等,功能強大。筆者經常用rope自動幫我重新整理導入的包順序。
  • python-mode: 一個vim插件,有很多 python 補全,語法檢測等支持。並且集成了很多 python 工具(pylint,pep8等),筆者正在用。
  • jedi-vim: 一個 vim 插件,python 支持補全和重構。注意和 rope 的自動補全有衝突,不要同時啟用。
  • Pyreverse: 代碼 UML 生成工具, 幫助我們理解繼承關係 (pythonhosted.org/theape)
  • Epydoc: Automatic API Documentation Generation for Python
  • 2to3/python-modernize: python2 轉 python3 工具。目前 Instagram 已經全面遷移到 python3

我覺得對於動態語言使用好靜態代碼檢測工具還是很有必要的,最好集成在你的開發工具里(比如使用vim的python-mode插件可以很容易整合這幾個代碼檢測工具),輔助你寫出高質量代碼,否則大型動態語言項目維護起來就是災難。python會給你一種代碼很好寫的錯覺,不嚴格要求經常會寫出來難以維護的爛代碼,甚至導致代碼倉庫失控。通過 pep8、pylint、mccae 檢測過的代碼如果警告和錯誤都消除以後,從代碼風格來說基本是沒有大問題的,筆者一開始用的時候也是各種警告,修正過很多代碼警告以後,以後代碼就越來越規範和整潔了。github.com/PyCQA

項目工具

  • pigar: 找出項目使用到的依賴庫
  • buildout: 項目構建工具
  • pyenv/virtualenv: 多版本管理
  • cookiecutter: 一系列項目模板生成工具,懶人必備。github.com/audreyr/cook

Api 工具

  • checklist: python.apichecklist.com

DSL

  • PLY
  • PyParsing
  • Parsley

測試工具

  • py.test
  • nosetest
  • unittest
  • tox
  • mock: mocking makes unit testing easier

文檔工具

  • google doc
  • gitbook + markdown
  • sphinx + readthedoc (代碼即文檔),python 項目很多在用這個生成文檔
  • swagger: 適合寫 restful 文檔
  • jupyter notebook,可以做筆記或者代碼演示或者ppt,支持rst,md等格式,搞數據科學的人用得比較多,配合 RISE (github.com/damianavila/) 可以做代碼互動式 slideshow,非常好的工具
  • Confluence: 適合作為團隊的項目文檔工具,團隊大了以後文檔還是很重要的。

日誌、異常收集工具

  • Sentry
  • Fluentd

管理及運維工具(devops很火)

  • Supervisor.進程管理
  • Fabric.應用部署
  • docker.最近比較火的容器技術
  • SaltStack和Ansible. 配置管理
  • StatsDGraphite等web監控

調試工具

  • ipdb/pdb
  • curl
  • http
  • postman

抓包工具

  • mitmproxy: 用 python 實現的終端命令行抓包工具
  • charles: 抓包軟體(收費)

壓測工具

  • locust: python實現的壓測工具。locust.io/
  • ab

資料庫工具

  • mycli: mysql 命令行補全等。github.com/dbcli/mycli
  • MysqlWorkbench/Sequel Pro: mysql 客戶端工具。

繪圖工具

processon: processon.com/ 使用了下感覺還不錯,基本能滿足需求

效率工具

  • 番茄工作法:人長期專註的時間是有限的,找到適合自己的最佳番茄鍾,並且每個時間段都專註於一件事,每件事分清輕重緩急,要事優先。在休息時間處理喝水、上廁所等雜事,做幾個深呼吸給腦瓜子充點氧。《精力管理》
  • teambiation/trello: todo list 工具。今天做了什麼;計劃做什麼;哪些困難導致工作被阻塞(實在搞不定的記下來及時向同事求助);發現了什麼問題;今天學到了什麼。(類似於開發日誌之類的玩意,每天都是真正做了事情的,並且最好每天都是學到了新東西的)
  • 音樂:選擇類似於《阿爾法波高效記憶音樂》《巴洛克學習音樂》等,能幫助你隔絕噪音。反正筆者聽歌的時候會想歌詞反而會打擾思路,一般就是聽這種不怎麼讓你瞎想的音樂。
  • 復盤。無論是寫代碼、做需求、改bug等,事後反思總結。分析並且記錄耗時的地方和可以改進的地方(怎麼讓自己漲點記性),對於一些錯誤或者坑也可以記錄成文檔當做團隊的知識財富。

推薦閱讀:

TAG:Python | Python教程 |