PyQt5 - ошибка уровня 10 SIP API. API 11 требуется
Обратная связь
Я работаю над установкой PyQt5 (на основе Qt5.2.1 / Sip 4.15.5 API 11???) со стандартным интерпретатором Python3 (3.3.2+), который совместим с PyQt5 (>= 3.3.2), так как это не так можно скомпилировать Python3.3-5 в Ubuntu 12.04, а затем невозможно установить PyQt5 (python 3.3.2 или более позднюю).
Plateform:
jeby6372@mercure:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 13.10
Release: 13.10
Codename: saucy
jeby6372@mercure:~$ uname -a
Linux mercure 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Казалось, что все работает нормально во время установки, импорт PyQt5 работает, но когда я пытаюсь импортировать модуль через интерпретатор python3, возникает эта ошибка:
>>> import PyQt5
>>> from PyQt5.QtCore import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: the sip module implements API v10.0 to v10.1 but the PyQt5.QtCore module requires API v11.0
Шаги установки:
- Qt5.2.1, установленный со стандартным установщиком Linux X64
- SIP 4.15.5 установка из источников
PyQt5 из исходных текстов, скомпилированных, как указано в процедуре RiverBank, для программы qmake в опциях compile.py:
python3 configure.py --qmake /opt/Qt/5.2.1/gcc_64/bin/qmake --sip / usr / bin / sip
Расположение пакетов:
- Корневой каталог Qt-5.2.1: /opt/Qt/5.2.1/gcc_64
- Корневой каталог PyQt5: /usr/lib/python3.3/site-packages
Sip версия
jeby6372@mercure:~$ which sip
/usr/bin/sip
jeby6372@mercure:~$ sip -V
4.15.5
jeby6372@mercure:~$
Моя переменная окружения python:
jeby6372@mercure:~$ echo $PYTHONPATH
/usr/lib/python3.3/site-packages
Переменная $PATH:
jeby6372@mercure:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/Qt/5.2.1/gcc_64/bin
$ LD_LIBRARY_PATH пуст (не думаю, что это важно, но я предпочитаю упомянуть об этом...)
Содержание сайта-pacakges dir:
jeby6372@mercure:~$ ls /usr/lib/python3.3/site-packages
PyQt5
__init__.py QtCore.so QtDBus.so QtNetwork.so Qt.so QtXmlPatterns.so uic
но в предыдущей установке все было иначе. Не знаю почему!:
jeby6372@mercure:~$ ls /usr/lib/python3.3/site-packages/PyQt5
__init__.py QtDesigner.so QtNetwork.so QtQuick.so QtSvg.so QtXmlPatterns.so
_QOpenGLFunctions_2_0.so QtGui.so QtOpenGL.so QtSensors.so QtTest.so uic
QtBluetooth.so QtHelp.so QtPositioning.so QtSerialPort.so QtWebKit.so
QtCore.so QtMultimedia.so QtPrintSupport.so Qt.so QtWidgets.so
QtDBus.so QtMultimediaWidgets.so QtQml.so QtSql.so QtX11Extras.so
Я не могу понять, в чем проблема, чем больше я работаю над этим продуктом, тем меньше понимаю. Я делаю эту установку на Ubuntu 13.10, потому что PyQt5 не работает на Ubuntu 12.04 из-за ошибок компиляции Python 3.3-5. Все еще без ответа....
пожалуйста помоги.
Заранее спасибо.
2 ответа
Ваша проблема возникла из-за столкновения поставляемого дистрибутивом sip и sip, который вы, вероятно, скомпилировали из исходников.
По предложению пользователя Мата, позвоните import sip; print(sip, sip.SIP_VERSION_STR)
из консоли интерпретатора python3 и сравните вывод с тем, который вы получаете при вызове sip -V
с нормальной (bash) консоли. Версии, вероятно, отличаются.
Я преодолел эту ошибку, идентифицировав все установленные в моей системе пакеты, связанные с sip. (Для Debian-подобных систем: dpkg -l | grep sip
), удалил их и все их файлы конфигурации (опять же, для Debian: apt-get purge python3-sip python3-sip-dev
...) и переустановил пользовательскую версию (запустив make install
снова).
Я, кстати, тоже сделал то же самое для всех пакетов PyQt5. Согласно вашему неполному списку пакетов сайта, вы также, возможно, установили более старый пакет дистрибутива PyQt5. В текущем есть еще много модулей. (Например, QtSql)
(Все упомянутые команды должны быть выполнены от имени пользователя root.)
Я пишу здесь, потому что не могу комментировать. Для тех, у кого есть эта проблема в Windows, для меня версия sip, показанная при импорте sip print(sip, sip.SIP_VERSION_STR), была ниже, чем версия, указанная в именах файлов sip. Я исправил это, удалив и переустановив sip (pip uninstall sip).