在VS Code中尝试学习PyQt5时遇到此问题,“ PyQt5.QtWidgets”模块中没有名称“ QApplication”,“ PyQt5.QtWidgets”模块中没有名称“ QWidget””。
我不确定这是否是pylint问题或其他问题。我已经确认PyQt5随pip3列表一起安装,但我似乎无法弄清楚问题所在。
import sys
from PyQt5.QtWidgets import QApplication, QWidget
def app():
my_app = QApplication(sys.argv)
w = QWidget()
w.setWindowTitle("Test")
w.show()
sys.exit(my_app.exec_())
app()
我希望这个错误不会一直显示,但是会阻止我在VS Code中运行。任何帮助或建议表示赞赏。
答案 0 :(得分:9)
我认为消除包导入错误的最简单方法是通过Ctrl + Shift + P进入vscode的JSON设置,搜索“设置”并选择Preferences: Open Settings (JSON)
并将此行添加到字典中:
"python.linting.pylintArgs": ["--extension-pkg-whitelist=PyQt5"]
如果要添加多个软件包,只需将第一个软件包添加,并用逗号分隔即可,如下所示:
"python.linting.pylintArgs": ["--extension-pkg-whitelist=PyQt5,otherPkg"]
答案 1 :(得分:3)
如果您使用 VSCode,请转到“文件”>“参考”>“设置”> 单击左上角的此图标: (将打开“settings.json”文件)> 将这些行添加到“settings.json”:
{
"python.linting.pylintArgs": [
"--extension-pkg-whitelist=PyQt5"
]
}
答案 2 :(得分:2)
我已经解决了这个问题,显然是Pylint doesn't load any C extensions by default, because those can run arbitrary code.
,所以我发现,如果您在项目目录中使用名为.pylintrc
的文件创建系统文件,则rc文件可以将该程序包列入白名单以停止抛出通过在rc文件extension-pkg-whitelist=PyQt5
中添加以下代码来纠正错误。因此,本质上问题不在于PyQt5,而是由此而来的短绒投掷了错误的错误。
答案 3 :(得分:1)
我可以在Windows 10(Python 3.7.3,PyQt 5.11.3,PyLint 2.3.1)的Visual Studio代码中重现PyLint错误。正如问题所表明的那样,尽管这并不能阻止我运行代码。
这肯定是linter问题,而不是PyQt5安装或其他问题,因为在将代码更改为以下等效代码时,PyLint不再抱怨:
var arr = [
'FOO_BAR_A_WRITE_SELF',
'FOO_BAR_A',
'FOO_BAR_A_READ_SELF',
'FOO_BAR_A_READ_ALL',
'FOO_BAR_A_WRITE_ALL',
'FOO_BAR_B_READ_SELF',
'FOO_BAR_B_WRITE_SELF',
'FOO_BAR_B',
'FOO_BAR_B_READ_ALL',
'FOO_BAR_B_WRITE_ALL'
];
const onRWorder=s=>{
let x = s.replace('_WRITE_','_')
if (x != s) x += '_WRITE'
else {
x = s.replace('_READ_','_')
if (x!= s) x += '_READ'
}
return x
}
arr.sort(function(a, b){
let a1 = onRWorder(a)
let b1 = onRWorder(b)
if(a1 < b1) { return -1 }
if(a1 > b1) { return 1 }
return 0
})
for (let z of arr) console.log(z)
显着的区别是此代码将.as-console-wrapper { max-height: 100% !important }
模块作为一个整体导入,而不是其中定义的单个类对象。
答案 4 :(得分:1)
我发现一个解决方案很简单,只需以这种方式使用QApplication:
my_app = QtWidgets.QApplication(sys.argv)
和不从QApplication
导入PyQt5
。
已在PyQt5中测试!
答案 5 :(得分:0)
如@ wolfeyes90 here所建议
在名为.pylintrc
的项目的根目录上创建一个文件,其内容为:
extension-pkg-whitelist=PyQt5
答案 6 :(得分:-3)
也许是有关PyQt5安装的错误