在 Ubuntu 17.04 下,我使用 PyQt5(使用 Qt5 5.8.0)和 mysql(5.7.18)开发了一个 Python 3 应用程序。最近一切顺利直到今天,我现在启动时得到:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QPSQL QPSQL7
如果你有不是以前做过:
apt-get install libqt5sql5-mysql
但我已经这样做了,并尝试卸载它并重新安装它,结果相同。
跑步locate libqsqlmysql
让我明白:
/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlmysql.so
/usr/local/lib/python3.5/dist-packages/PyQt5/Qt/plugins/sqldrivers/libqsqlmysql.so
其中第一个的日期是 2017 年 2 月 9 日,我相信它是 Qt5 而不是 PyQt5,它ldd
没有错误,而且我认为没有相关性。
但是,第二个日期是 2017 年 6 月 21 日,所以看起来是罪魁祸首。如果我输入:ldd /usr/local/lib/python3.5/dist-packages/PyQt5/Qt/plugins/sqldrivers/libqsqlmysql.so
,在输出中我会注意到:
libmysqlclient.so.18 => not found
libssl.so.10 => not found
libcrypto.so.10 => not found
我说得对,这就是问题所在吗?所以这是 PyQt5 的问题,而不是 Qt5 的问题?有人能建议如何补救吗?(我没有可以恢复到的旧状态。)
答案1
好吧,这原来是一个pip3
/PyCharm问题:
- 我以前已经做过了
apt-get install python3-pyqt5
。 - 之前
apt-get install libqt5sql5-mysql
已经安装了/usr/lib/x86_64-linux-gnu/qt5/plugins/sqldrivers/libqsqlmysql.so
,一切正常。 - 然后 PyCharm 让我这么做
apt-get install python3-pip
(我很幸运我记得这一点),并着手做一些pip3 install pyqt5
幕后工作。 - 这已经创建了自己的
/usr/local/lib/python3.5/dist-packages/PyQt5/Qt/plugins/sqldrivers/libqsqlmysql.so
,并且从输出中可以看出ldd
该区域处于不完整/不一致的状态。 pip3 uninstall pyqt5
删除了它,并恢复到无错误的安装。
我以前曾设法避免使用任何pip3
,成功地通过 安装了所有内容apt-get
。 这次经历让我pip3
完全不相信它是否可以简单地创建一个没有任何消息的错误安装。