【问题标题】:Qt5 error in ros: PyCapsule_GetPointer called with incorrect nameros 中的 Qt5 错误:PyCapsule_GetPointer 以不正确的名称调用
【发布时间】:2022-07-24 17:51:52
【问题描述】:

我有一个安装了 ros noetic 的 Ubuntu 20.04.4。

当我尝试运行 rqt 时出现此错误:

RosPluginProvider.load(qt_gui_cpp/CppPluginProvider) exception raised in __builtin__.__import__(qt_gui_cpp.cpp_plugin_provider, [CppPluginProvider]):
Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui/ros_plugin_provider.py", line 79, in load
    module = __builtin__.__import__(
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui_cpp/cpp_plugin_provider.py", line 33, in <module>
    from .cpp_binding_helper import qt_gui_cpp
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui_cpp/cpp_binding_helper.py", line 43, in <module>
    from . import libqt_gui_cpp_sip
ValueError: PyCapsule_GetPointer called with incorrect name

RecursivePluginProvider.discover() loading plugin "qt_gui_cpp/CppPluginProvider" failed:
Traceback (most recent call last):
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui/recursive_plugin_provider.py", line 60, in discover
    instance = self._plugin_provider.load(plugin_descriptor.plugin_id(), None)
  File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui/ros_plugin_provider.py", line 90, in load
    raise e
  File "/opt/ros/noetic/lib/python3/dist-packages/rqt_gui/ros_plugin_provider.py", line 79, in load
    module = __builtin__.__import__(
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui_cpp/cpp_plugin_provider.py", line 33, in <module>
    from .cpp_binding_helper import qt_gui_cpp
  File "/opt/ros/noetic/lib/python3/dist-packages/qt_gui_cpp/cpp_binding_helper.py", line 43, in <module>
    from . import libqt_gui_cpp_sip
ValueError: PyCapsule_GetPointer called with incorrect name

我尝试卸载并再次安装 ros/qt 但没有成功。

我安装了带有 pip 的 PyQt5 5.14.1 和 PyQt5-sip 12.9.1 以及带有 apt 的 pyqt5-dev 5.14.1。 如果我卸载 python Qt 包,rqt 依赖于 PySide2(安装版本 5.15.2.1),但我有一个段错误:

QtBindingHelper using pyside
PluginManager._discover() force discovery of plugins
RospkgPluginProvider._find_plugins() crawling for plugins of type 'qt_gui'
[1]    148476 segmentation fault (core dumped)  rqt

【问题讨论】:

    标签: python pyqt ros rqt


    【解决方案1】:

    我遇到了同样的问题,我通过修改我的 PYTHONPATH 来解决它。感觉我不应该这样做,还有其他东西在搞乱 PYTHONPATH,但是嘿,它可以工作。

    就我而言,我有:

    root@pc:~# echo $PYTHONPATH
    /opt/ros/noetic/lib/python3/dist-packages:
    

    添加 /opt/ros/noetic/lib/python3/dist-packages(从下一步中找到该路径):

    root@pc:~# export PYTHONPATH=$PYTHONPATH:/opt/ros/noetic/lib/python3/dist-packages
    root@pc:~# echo $PYTHONPATH
    /opt/ros/noetic/lib/python3/dist-packages:/usr/lib/python3/dist-packages
    

    而且我可以使用 rqt 工具。

    我查看了 PySide2 和 PyQt5 的安装位置:

    root@pc:~# find /usr -name PySide2
    /usr/include/PySide2
    /usr/lib/python3/dist-packages/PySide2
    /usr/share/PySide2
    root@pc:~# find /usr -name PyQt5
    /usr/lib/python3/dist-packages/PyQt5
    /usr/share/sip/PyQt5
    

    并验证了我的软件包是由 apt 安装的,其中唯一的:

    root@pc:~# dpkg -l | grep pyqt5
    ii  pyqt5-dev                                   5.14.1+dfsg-3build1               all          Development files for PyQt5
    ii  python3-pyqt5                               5.14.1+dfsg-3build1               amd64        Python 3 bindings for Qt5
    ii  python3-pyqt5.qtsvg                         5.14.1+dfsg-3build1               amd64        Python 3 bindings for Qt5's SVG module
    root@pc:~# dpkg -l | grep pyside
    ii  libpyside2-dev                              5.14.0-1~exp1ubuntu5              amd64        Python bindings for Qt5 (development files)
    ii  libpyside2-py3-5.14                         5.14.0-1~exp1ubuntu5              amd64        Python 3 bindings for Qt5 (base files)
    ii  python3-pyside2.qtcore                      5.14.0-1~exp1ubuntu5              amd64        Python bindings for Qt5 core module (Python 3)
    ii  python3-pyside2.qtgui                       5.14.0-1~exp1ubuntu5              amd64        Python bindings for Qt5 Gui module (Python 3)
    ii  python3-pyside2.qtsvg                       5.14.0-1~exp1ubuntu5              amd64        Python bindings for Qt5 Svg module (Python 3)
    ii  python3-pyside2.qtwidgets                   5.14.0-1~exp1ubuntu5              amd64        Python bindings for Qt5 Widgets module (Python 3)
    

    pip3 显示没有安装任何软件包:

    pip3 freeze | grep -i pyside
    

    我在使用 pip3 包安装/卸载时也遇到了这个错误(为了方便谷歌搜索到这里):

    Traceback (most recent call last):
      File "/opt/ros/noetic/lib/python3/dist-packages/python_qt_binding/binding_helper.py", line 108, in _select_qt_binding
        QT_BINDING_VERSION = binding_loader(required_modules, optional_modules)
      File "/opt/ros/noetic/lib/python3/dist-packages/python_qt_binding/binding_helper.py", line 185, in _load_pyside
        _named_import('PySide2.%s' % module_name)
      File "/opt/ros/noetic/lib/python3/dist-packages/python_qt_binding/binding_helper.py", line 133, in _named_import
        module = builtins.__import__(name)
    ModuleNotFoundError: No module named 'PySide2'
    

    【讨论】:

      猜你喜欢
      • 2019-01-12
      • 1970-01-01
      • 2021-01-18
      • 2017-10-14
      • 2022-06-25
      • 1970-01-01
      • 1970-01-01
      • 2011-08-29
      相关资源
      最近更新 更多