項目場景
安裝好了pytorch
,寫一個簡單的測試代碼,如下:
import torch
x = torch.rand(5, 3)
print(x)
問題描述
正常輸出:
tensor([[0.3506, 0.0131, 0.4908],
[0.8524, 0.1879, 0.2194],
[0.0101, 0.6458, 0.9603],
[0.7522, 0.2765, 0.6378],
[0.6041, 0.6980, 0.8985]])
但會報錯:
Module 'torch' has no 'rand' member
原因分析
這個錯誤是pylint
報的,所以肯定與它有關。具體可以看github上的第一條評論。
解決方案
方案一(推薦)
-
Ctrl+Shift+P
打開vscode的命令面板,輸入settings.json
並打開第一項
-
在
settings.json
中插入以下代碼
"python.linting.pylintArgs": [
"--errors-only",
"--generated-members=numpy.*, torch.*, cv2.*, cv.*"
]
- 插入代碼之后記得保存一下
方案二
打開vscode,在settings
中搜索python.linting.pylintPath
,將原pylint
替換為conda安裝路徑\pkgs\pylint文件夾\Scripts\pylint
前提是你用conda安裝的pytorch,無論是Anaconda還是Miniconda都行。
溫馨提示
Pylint
是一個 Python 代碼分析工具,它分析 Python 代碼中的錯誤,查找不符合代碼風格標准和有潛在問題的代碼。
用方案二之后pylint不知道為什么不會再進行任何提示了,相當於將pylint禁用了,顯然這不是我們想要的效果。
而方案一不僅可以解決torch的報錯問題,pylint還能繼續發揮作用。以下圖為例,torch不再報錯,而其它錯誤比如使用了未定義的變量等,pylint還是會正常的提示。
引用參考
https://pypi.org/project/pylint/
https://github.com/pytorch/pytorch/issues/701
https://stackoverflow.com/questions/50319943/pytorch-error-message-torch-has-no-member