Установка QtQml в Raspberry pi
Я застрял с одной ошибкой при сборке PyQt5 для Rasberry Pi. Я успешно смог запустить приложение, которое использует QQmlApplicationEngine на рабочем столе Windows. Теперь я хотел запустить то же приложение в Raspberry pi 3. Я собираю PyQt5 (5.4.1v) из исходного кода и пытался запустить приложение, но получаю ошибку:
Ошибка импорта: модуль не найден "PyQt5.QtQml".
Я понял, что когда я собираю PyQt5 из исходного кода, я получаю:
Ошибка проекта: неизвестные модули в QT: qml
и показывает мне список модулей, которые будут построены.
Просто для справки, я использую raspbian и установил следующее перед сборкой PyQt5.
sudo apt-get update
sudo apt-get установить qtcreator
sudo apt-get установить qt5-qmake
добавил "export QT_SELECT = qt5" в мои "~/.profile" и "~ /.bashrc"
sudo apt-get установить qt5-default qt5-qmake qtbase5-dev-tools qttools5-dev-tools build-существенно libboost-dev libboost-system-dev libboost-filesystem-dev libboost-параметры-программы-dev libboost-thread-dev libssl-dev libdb++-dev libgl1-mesa-dev
Как я должен установить QtQml в PyQt5? Пожалуйста помоги...
Заранее спасибо.
1 ответ
PyQt5 - это (как вы, возможно, знаете) просто оболочка для библиотек Qt C++. Для использования определенного модуля в PyQt5 должна быть установлена базовая библиотека C++.
Первое сообщение об ошибке показывает, что PyQt5.QtQml
отсутствует модуль, что, соответственно, приводит к выводу, что базовая оболочка Python отсутствует.
Второе сообщение об ошибке, вероятно, генерируется на уровне C++ и означает, что необходимая библиотека Qt C++ для этого модуля отсутствует.
Поскольку вы собираете PyQt5, вам нужны не только библиотеки времени выполнения, но и пакеты разработки для Qt. Для QML вам нужен qtdeclerative5-dev
пакет и libqt5qml5
(Я думаю, что это было название для библиотеки времени выполнения). Это, конечно, зависит от множества других пакетов, которые будут автоматически установлены.
PS: Не забывайте библиотеку SIP, которую PyQt имеет в качестве зависимости, независимо от того, какие модули Qt вы хотите использовать.