Pylance不应该报出未知属性的错误
在我的工作区,我使用的是自己本地编译的Sofa库版本,并在我自己的代码中使用。
在编辑器中,Pylance会在我使用Sofa的子属性时报错,错误信息像 "Core" is not a known attribute of module "Sofa" Pylance(reportAttributeAccessIssue) [Ln 21, Col 37] 一样,例如
import Sofa
rootNode = Sofa.Core.Node("root")
^^^^
而实际上这段代码是正确的。
从终端来看,库确实是从构建目录加载的,并且位于正确的目录 PYTHONPATH。
>>> Sofa.__file__
'/home/me/Documents/sofa/build/lib/python3/site-packages/Sofa/__init__.py'
$ echo $PYTHONPATH
/home/me/Documents/sofa/build/lib/python3/site-packages
以下是我的工作区的目录树
.venv
└ ... # Content of python venv
build
└ lib/python3/site-packages
└ Sofa
├ Core.cpython...so
├ __init__.py
└ ...
src/...
在VSCode工作区中选择的解释器是位于 .venv 目录中的那个,当我在终端运行一些脚本时,一切都正常。
我尝试把 "${workspaceFolder}/build/lib/python3/site-packages" 添加到设置 "python.analysis.extraPaths",让Pylance也在这里查找,但仍然有错误。
我该如何去除这些其实并非真正错误的报错?
解决方案
我终于向Claude求助,请他给出修复方案……
他给了我两种去除这些错误信息的办法:
忽略该信息: 可以在所有相关行末尾添加 # type: ignore[reportAttributeAccessIssue],或者在 settings.json 中禁用它们。
"python.analysis.diagnosticSeverityOverrides": {
"reportAttributeAccessIssue": "none"
}
我看到的主要缺点是,实际的错误确实可能发生,然后被类型检查器跳过……
为库生成一个 stub: 使用程序 pybind11-stubgen:
source .venv/bin/activate
pip install pybind11-stubgen
export PYTHONPATH=/home/me/Documents/sofa/build/lib/python3/site-packages
pybind11-stubgen Sofa -o stubs
然后在 settings.json 中添加这些行
{
"python.analysis.stubPath": "${workspaceFolder}/stubs",
"python.analysis.extraPaths": [
"${workspaceFolder}/build/lib/python3/site-packages"
]
}
缺点是如果对生成的stub进行了修改,可能与构建版本不同。
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。