rqt_plot: PyQt4 и PyQt5 оборачивают один и тот же класс объектов

#python #qt #ros

#python #qt #ros

Вопрос:

Я пытаюсь использовать rqt_plot функцию ROS, и каждый раз, когда я вызываю rqt_plot , я получаю:

 Traceback (most recent call last):
  File "/opt/ros/kinetic/bin/rqt_plot", line 6, in <module>
    from rqt_plot.plot import Plot
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rqt_plot/plot.py", line 43, in <module>
    from .data_plot import DataPlot
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rqt_plot/data_plot/__init__.py", line 44, in <module>
    from .pyqtgraph_data_plot import PyQtGraphDataPlot
  File "/opt/ros/kinetic/lib/python2.7/dist-packages/rqt_plot/data_plot/pyqtgraph_data_plot.py", line 46, in <module>
    from pyqtgraph import __version__ as pyqtgraph_version
  File "/usr/lib/python2.7/dist-packages/pyqtgraph/__init__.py", line 13, in <module>
    from .Qt import QtGui
  File "/usr/lib/python2.7/dist-packages/pyqtgraph/Qt.py", line 104, in <module>
    from PyQt4 import QtGui, QtCore, uic
RuntimeError: the PyQt4.QtCore and PyQt5.QtCore modules both wrap the QObject class
  

Я видел, как другие люди исправляли это, удаляя Qt4 и используя только Qt5, но я не совсем уверен, почему эта проблема существует для меня, потому что я не верю, что у меня даже установлен qt4.

Вызов pip3 uninstall pyqt4 возвращает:

 Cannot uninstall requirement pyqt4, not installed
  

Как я могу заставить rqt_plot использовать qt5 или что еще я должен сделать?

Это касается ROS kinetic и ubuntu 16.04 LTS.

Ответ №1:

Возможно, у вас установлен Qt4, для верности проверьте, открыв python из командной строки и запустив:

 from PyQt4.QtCore import QT_VERSION_STR
print(QT_VERSION_STR)
  

Аналогичным образом вы можете проверить наличие Qt5, заменив 4 на 5. Однако сначала вам нужно будет выйти и перезапустить python.

Комментарии:

1. Итак, очевидно, что у меня установлен QT4.8.7 без ведома pip. Как бы мне его удалить? Или я должен удалить qt5 вместо этого?

2. Можете ли вы поделиться своим PYTHONPATH, вы можете проверить это, выполнив echo $PYTHONPATH

3. /home/morten/catkin_ws/devel/lib/python2.7/dist-packages:/opt/ros/kinetic/lib/python2.7/dist-packages

4. Можете ли вы попытаться просто сохранить пакет ROS в PYTHONPATH, запустив export PYTHONPATH=/opt/ros/kinetic/lib/python2.7/dist-packages это может указать нам, есть ли конфликт с чем-то в вашем catkin_ws.

5. После выполнения export команды, за которой следует rqt_plot , я снова получаю ту же ошибку версии QT