當前位置:
首頁 > 知識 > Google出品的Python代碼靜態類型分析器:Pytype

Google出品的Python代碼靜態類型分析器:Pytype

Pytype檢查並推斷Python代碼的類型——不需要類型註解。Pytype可以:

  • 使用lint檢查純Python代碼,標記常見錯誤,如屬性名拼寫錯誤、不正確的函數調用,等等更多,它甚至可以跨文件。
  • 強化用戶提供的類型註解。雖然註解對於pytype是可選的,但是當註解存在時,它會檢查並應用們。
  • 在獨立文件(「pyi文件」)中生成類型註解,可以使用自身提供的merge-pyi工具將其合併回Python源代碼中。

Pytype是一個靜態分析器,這意味著它不執行它所檢查的代碼。

谷歌的數千個項目都依賴pytype來保持其Python代碼類型良好和無錯誤。

更多信息,請查看用戶指南或FAQ。

快速入門

要快速開始對一個文件或目錄進行類型檢查,你只需運行以下命令,用你的輸入替換file_or_directory :

Google出品的Python代碼靜態類型分析器:Pytype

要在整個包上設置pytype,請將以下內容添加到包上級目錄中的setup.cfg文件中,用包名替換package_name:

Google出品的Python代碼靜態類型分析器:Pytype

現在,你可以運行無參數命令pytype來對包進行類型檢查。將pytype添加到你的自動化測試中也很容易;參見在Travis上運行pytype的GitHub項目的示例。

最後,pytype會生成含有推斷出的類型信息的文件,默認情況下位於.pytype/pyi中。你可以使用此信息對相應的源文件進行類型註解,用文件的導入路徑替換module.py:

Google出品的Python代碼靜態類型分析器:Pytype

需求

你需要一個Python 2.7或3.5+解釋器來運行pytype,還需要在$PATH中設置一個與所分析代碼的Python版本相同的Python解釋器。

平台支持:

  • Pytype目前是在Linux上開發和測試的,Linux是主要支持的平台。
  • 在MacOSX上安裝需要OSX 10.7或更高版本,以及Xcode v8或更高版本。
  • 目前不支持windows。

安裝

Pytype可以通過pip來安裝。注意,安裝過程需要使用wheel和setuptools。(如果你在virtualenv中工作,這兩個包應該已經存在。)

Google出品的Python代碼靜態類型分析器:Pytype

或者從GitHub上的源碼進行安裝 :

Google出品的Python代碼靜態類型分析器:Pytype

代替使用--recurse-submodules參數進行安裝, 你也可以在pytype目錄中使用以下命令來安裝:

Google出品的Python代碼靜態類型分析器:Pytype

用法

Google出品的Python代碼靜態類型分析器:Pytype

常見選項:

  • -V,--Python-Version:目標代碼的Python版本(major.minor)。默認為3.6。
  • -o,--output:所有pytype輸出的保存目錄,包括生成的.pyi文件。默認為.pytype。
  • -d,--disable。以逗號分隔的要忽略的錯誤名稱列表。pytype錯誤名稱的詳細說明在此文檔中。默認為空。

要獲得選項的完整列表,請運行pytype --help。

除了上面所述,你還可以通過設置$TYPESHED_HOME來直接運行pytype命令使用定製的typeshed安裝替代它自己的綁定副本。

配置文件

為了方便起見,你可以將你的pytype配置保存在一個文件中。配置文件是一個帶有[pytype]部分的INI-樣式的文件;如果沒有提供顯式配置文件,pytype會從當前目錄向上遍歷查找第一個setup.cfg文件中的[pytype]部分。

我們從生成一個配置文件示例開始:

Google出品的Python代碼靜態類型分析器:Pytype

現在我們根據本地設置來自定義文件,只保留需要的部分。目錄可能是配置文件的相對路徑,如果你想將配置文件作為項目的一部分進行檢查,這是非常有用的。

例如,假設你有以下目錄結構,並且想要分析包 ~/repo1/foo,它依賴於包 ~/repo2/bar:

Google出品的Python代碼靜態類型分析器:Pytype

下面是設置好的配置文件,它將指示pytype將~/repo1/foo作為Python 3.6代碼進行類型檢查,在~/repo1和~/repo2中查找包,並忽略屬性錯誤。注意,到包的路徑不包括包本身。

Google出品的Python代碼靜態類型分析器:Pytype

我們可能會發現需要通過運行pytype的損壞依賴項檢查器來將~/repo2添加到pythonpath中:

Google出品的Python代碼靜態類型分析器:Pytype

子工具

除了pytype本身外,Pytype還附帶了三個腳本:

  • merge-pyi, 用於將.pyi文件中的類型信息合併到Python文件中.
  • pytd, 一個 .pyi 文件解析器.
  • pytype-single, pytype開發人員的調試工具,用來對單個Python文件進行分析,並假定已經為該Python文件的所有依賴項生成了.pyi文件。

產品路線圖

?支持Windows系統

許可證

Apache 2.0

免責聲明

本項目不是一個正式的Google產品。


英文原文:https://github.com/google/pytype 譯者:一瞬

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python部落 的精彩文章:

導致機器學習項目失敗的7個原因
Python lxml庫簡介

TAG:Python部落 |