Spyder(已安装 pip)不再启动并出现错误:未定义符号:_ZdaPvm,版本 QT_5

问题描述 投票:0回答:3

在 Ubuntu 22.04(5.15.0-43-generic)上,我使用 pip 新更新了

spyder
,如下所示:

$ sudo -H pip3 install --upgrade spyder

一切都很顺利,但是当我现在启动spyder时它会抛出此错误:

$ spyder 
Traceback (most recent call last):
  File "/usr/local/bin/spyder", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.10/dist-packages/spyder/app/start.py", line 248, in main
    from spyder.app import mainwindow
  File "/usr/local/lib/python3.10/dist-packages/spyder/app/mainwindow.py", line 57, in <module>
    from qtpy import QtWebEngineWidgets  # analysis:ignore
  File "/usr/local/lib/python3.10/dist-packages/qtpy/QtWebEngineWidgets.py", line 29, in <module>
    from PyQt5.QtWebEngineWidgets import QWebEnginePage
ImportError: /usr/local/lib/python3.10/dist-packages/PyQt5/Qt5/lib/libQt5Network.so.5: undefined symbol: _ZdaPvm, version Qt_5

更多信息:

$ python3 --version
Python 3.10.4
$ pip list | grep -i pyqt
PyQt5                         5.15.6
PyQt5-Qt5                     5.15.2
PyQt5-sip                     12.11.0
PyQtWebEngine                 5.15.5
PyQtWebEngine-Qt5             5.15.2
$ pip list | grep -i spyder
pyls-spyder                   0.4.0
spyder                        5.3.2
spyder-kernels                2.3.2

我无法卸载 PyQt5:

$ sudo -H pip uninstall pyqt5
Found existing installation: PyQt5 5.15.6
ERROR: Cannot uninstall PyQt5 5.15.6, RECORD file not found. Hint: The package was installed by sip-build.

最后一行在终端中以红色打印。

从那时起,我无法找到有关如何调试它以使spyder再次工作的相关信息。

我可以做什么来修复这个错误?

python python-3.x pip spyder
3个回答
1
投票

好的,这解决了我的问题:

$ sudo -H pip3 install --force-reinstall spyder

它可能会抛出一些错误,例如:

  Attempting uninstall: PyQtWebEngine
    Found existing installation: PyQtWebEngine 5.15.5
ERROR: Cannot uninstall PyQtWebEngine 5.15.5, RECORD file not found. Hint: The package was installed by sip-build.

如果您尝试单独更新,将会显示:

$ sudo -H pip3 install -U PyQtWebEngine
Requirement already satisfied: PyQtWebEngine in /usr/lib/python3/dist-packages (5.15.5)
Collecting PyQtWebEngine
  Using cached PyQtWebEngine-5.15.6-cp37-abi3-manylinux1_x86_64.whl (230 kB)
Requirement already satisfied: PyQt5>=5.15.4 in /usr/local/lib/python3.10/dist-packages (from PyQtWebEngine) (5.15.7)
Requirement already satisfied: PyQtWebEngine-Qt5>=5.15.0 in /usr/local/lib/python3.10/dist-packages (from PyQtWebEngine) (5.15.2)
Requirement already satisfied: PyQt5-sip<13,>=12.11 in /usr/local/lib/python3.10/dist-packages (from PyQtWebEngine) (12.11.0)
Requirement already satisfied: PyQt5-Qt5>=5.15.0 in /usr/local/lib/python3.10/dist-packages (from PyQt5>=5.15.4->PyQtWebEngine) (5.15.2)
Installing collected packages: PyQtWebEngine
  Attempting uninstall: PyQtWebEngine
    Found existing installation: PyQtWebEngine 5.15.5
ERROR: Cannot uninstall PyQtWebEngine 5.15.5, RECORD file not found. Hint: The package was installed by sip-build.

因此,在这种情况下,请使用受罪包上的

--ignore-installed
标志运行安装,这 应该 毫无问题地安装它:

$ sudo -H pip3 install --ignore-installed PyQtWebEngine
Collecting PyQtWebEngine
  Using cached PyQtWebEngine-5.15.6-cp37-abi3-manylinux1_x86_64.whl (230 kB)
Collecting PyQtWebEngine-Qt5>=5.15.0
  Using cached PyQtWebEngine_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl (67.5 MB)
Collecting PyQt5>=5.15.4
  Using cached PyQt5-5.15.7-cp37-abi3-manylinux1_x86_64.whl (8.4 MB)
Collecting PyQt5-sip<13,>=12.11
  Using cached PyQt5_sip-12.11.0-cp310-cp310-manylinux1_x86_64.whl (359 kB)
Collecting PyQt5-Qt5>=5.15.0
  Using cached PyQt5_Qt5-5.15.2-py3-none-manylinux2014_x86_64.whl (59.9 MB)
Installing collected packages: PyQtWebEngine-Qt5, PyQt5-Qt5, PyQt5-sip, PyQt5, PyQtWebEngine
Successfully installed PyQt5-5.15.7 PyQt5-Qt5-5.15.2 PyQt5-sip-12.11.0 PyQtWebEngine-5.15.6 PyQtWebEngine-Qt5-5.15.2

之后上述错误就不会再出现了。举个例子:

$ sudo -H pip3 install -U PyQtWebEngine
Requirement already satisfied: PyQtWebEngine in /usr/local/lib/python3.10/dist-packages (5.15.6)
Requirement already satisfied: PyQtWebEngine-Qt5>=5.15.0 in /usr/local/lib/python3.10/dist-packages (from PyQtWebEngine) (5.15.2)
Requirement already satisfied: PyQt5-sip<13,>=12.11 in /usr/local/lib/python3.10/dist-packages (from PyQtWebEngine) (12.11.0)
Requirement already satisfied: PyQt5>=5.15.4 in /usr/local/lib/python3.10/dist-packages (from PyQtWebEngine) (5.15.7)
Requirement already satisfied: PyQt5-Qt5>=5.15.0 in /usr/local/lib/python3.10/dist-packages (from PyQt5>=5.15.4->PyQtWebEngine) (5.15.2)

对所有有问题的包裹重复相同的过程。

终于更新spyder了:

$ sudo -H pip3 install --force-reinstall spyder

瞧。应该有一个可用的间谍程序。

顺便说一句:请注意

-H
后面的
sudo
选项。此安装包位于
/usr/local/lib/python3.xx/dist-packages
下,通常不会与
apt
系统范围内安装的软件包(位于
/usr/lib/python3/dist-packages
下)冲突,并且您绝对不想接触其他与
apt
不同的东西!
我使用它来避免通过调用不带
pip
sudo
来避免在用户基础上安装相同的软件包,这将为计算机上的每个用户将它们安装在
~/.local/lib/python3.10/site-packages/
下。


0
投票

你看过这个吗?这正是您不应该使用

sudo pip install
的原因。库版本会变得无聊,出现不一致,并且东西不起作用。

使用

sudo pip
(最后一次)卸载Spyder和PyQT5,然后使用
apt
重新安装相关软件包。最后,使用
pip install --user
升级 Spyder(没有
sudo
)。之后一切应该都能正常工作。


0
投票

有效:

pip install pyqtwebengine
© www.soinside.com 2019 - 2024. All rights reserved.