1. 程式人生 > 實用技巧 >vtk程式碼正常執行,pylint報錯no module、no member、undefined variable

vtk程式碼正常執行,pylint報錯no module、no member、undefined variable

相關問題

環境:在vscode中使用python3.7,呼叫第三方庫vtk-8.2.0生成的包
錯誤:出現no moduleno memberundefined variable錯誤,但實際程式碼能夠正常執行
在這裡插入圖片描述
在這裡插入圖片描述


解決方案

新增pylint附加項--ignored-modules=vtk,可解決no memberno module報錯
在這裡插入圖片描述
開頭改為from vtk.util.colors import light_grey,可解決後續undefined variable報錯
在這裡插入圖片描述


具體原因

github.com/PyCQA/pylint/issues/1524
在這裡插入圖片描述
大意是說有可能是以下兩種原因:

  1. 該模組是c拓展,pylint讀不到原始碼,也不知道模組有哪些成員
  2. 該模組採用動態特性比如globals().update來更新檔案,pylint無法分析這種動態成員

可用--ignored-modules=vtk--generated-members=vtk.*--extension-pkg-whitelist=vtk等類似的方式來禁用相關模組的靜態程式碼檢查


PS

雖然解決了pylint報錯問題,但仍然無法做到自動補全等智慧操作,治標不治本

歸根到底還是python的語言特性,像c++這種有標頭檔案的可能就不會出現這種情況吧