没有名为 PyQt5.sip 的模块

Hol*_*ekt 8 python qt pyqt python-3.x pyqt5

升级到 python-pyqt5 5.12-2 后,当我尝试从 QtWidgets 导入时出现此错误

from PyQt5.QtWidgets import * 
Run Code Online (Sandbox Code Playgroud)

错误:

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'PyQt5.sip'
Run Code Online (Sandbox Code Playgroud)

关于如何解决这个问题的任何想法?

ede*_*rag 7

原因是PyQt-5.11 向后不兼容的变化

geoptics修复程序适用于旧版本和新版本:

try:
    # new location for sip
    # https://www.riverbankcomputing.com/static/Docs/PyQt5/incompatibilities.html#pyqt-v5-11
    from PyQt5 import sip
except ImportError:
    import sip
Run Code Online (Sandbox Code Playgroud)


小智 5

正如这里建议的那样 pyuic5 - ModuleNotFoundError: No module named PyQt5.sip

尝试卸载并重新安装所有 PyQt 相关库:

pip uninstall PyQt5
pip uninstall PyQt5-sip
pip uninstall PyQtWebEngine
Run Code Online (Sandbox Code Playgroud)

然后再次安装它们,这将修复:

ModuleNotFoundError: No module named 'PyQt5.sip'
ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets'
Run Code Online (Sandbox Code Playgroud)

PPS。:如果您在卸载库时遇到问题,请转到您的 Python 文件夹,例如C:\Users\<USERNAME>\AppData\Local\Programs\Python\Python<PYTHON-VERSION>\Lib\site-packages并手动删除 PyQt 文件夹,它们会卸载所有内容并重新安装(确保您拥有最新的 Python 版本并升级了您的 pip)


小智 1

您应该将 PyQt5.sip 添加到隐藏导入中;这应该可以解决问题。