cx_freeze:未加载QODBC驱动程序

时间:2014-02-15 00:32:31

标签: python qt pyqt cx-freeze qtsql

我的python应用程序看起来像:

test.py

from PyQt4 import QtCore
from PyQt4 import QtGui
from PyQt4 import QtSql

import sys
import atexit

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    db = QtSql.QSqlDatabase.addDatabase('QODBC')
    sys.exit(app.exec_())

如果我运行此应用程序,一切正常。但是,如果我使用cx_freeze创建可执行文件,我总是会收到以下错误:

QSqlDatabase: QODBC driver not loaded

QSqlDatabase: available drivers:

我使用以下命令创建可执行文件:

C:\Python27\Scripts\cxfreeze.bat test.py --target-dir C:\Test --include-path="C:\Python27\Lib\site-packages\PyQt4"

如果我查看C:\Test(cx_freeze创建可执行文件的位置),我会看到一堆带有“sql”字样的* .dll文件(qsqlodbc4.dll,QtSql4.dll ... )

过去,我用cx_freeze创建了一些PyQT应用程序,它总能很好地工作。但是,与QtSql模块一起,我总是收到上面的错误消息。

我的操作系统:Windows 7

你们对如何解决这个问题有任何想法吗?

编辑:好的,我明白了。我将PyQt4\plugins\sqldrivers的内容复制到C:\Test\sqldrivers,现在可以使用了。

亲切的问候

哈德

1 个答案:

答案 0 :(得分:0)

这只适用于您的开发人员计算机,但是当您创建一个exe文件并在其他计算机上运行此文件时,它无法正常工作。

我使用pyinstaller,并解决问题。

仅使用:

pyinstaller --onefile --windowed myscript.py