使用PyQt4寫了一個小程序,其中用到了sqlite數據庫,在個人調試環境中一切正常。當我使用cx_Freeze將其打包後,在運行相應的exe時,出現問題,總是提示"sqlite driver not loaded"的錯誤,看來是沒有找到sqlite對應的驅動。因而百度+google了一番,發現有這樣問題的人還很多,其出現這種錯誤的緣由很簡單,就是缺DLL庫了。cx_Freeze已經將sqlite3.dll、qtsql4.dll拷貝到工做目錄下,可是QT自己的數據庫驅動qsqlite4.dll沒有。因而我搜到了一個qsqlite4.dll文件,將其直接考到工做目錄下,運行,仍然報錯。因而在深刻的研究了一下,發現所謂的數據庫驅動,在qt裏屬於plugins,這些插件在打包發佈的時候,必須放置在工做目錄的特定文件夾下面,好比數據庫驅動要放在"sqldrivers"目錄下,而且要小寫。以下表所示: html
Base Class | Directory Name | Key Case Sensitivity |
---|---|---|
QAccessibleBridgePlugin | accessiblebridge | Case Sensitive |
QAccessiblePlugin | accessible | Case Sensitive |
QDecorationPlugin | decorations | Case Sensitive |
QIconEnginePlugin | iconengines | Case Insensitive |
QImageIOPlugin | imageformats | Case Sensitive |
QInputContextPlugin | inputmethods | Case Sensitive |
QKbdDriverPlugin | kbddrivers | Case Sensitive |
QMouseDriverPlugin | mousedrivers | Case Sensitive |
QPictureFormatPlugin | pictureformats | Case Sensitive |
QScreenDriverPlugin | gfxdrivers | Case Sensitive |
QScriptExtensionPlugin | script | Case Sensitive |
QSqlDriverPlugin | sqldrivers | Case Sensitive |
QStylePlugin | styles | Case Insensitive |
QTextCodecPlugin | codecs | Case Sensitive |
主要參考了:http://www.cuteqt.com/blog/?p=1002 帶着插件一塊兒走 sql
http://www.cuteqt.com/blog/?p=1059 帶着插件一塊兒走續篇 數據庫
http://doc.qt.nokia.com/4.3/plugins-howto.html How to Create Qt Plugins 小程序
http://doc.qt.nokia.com/4.3/qt-conf.html Using qt.conf google