【问题标题】:cx_freeze: QODBC driver not loadedcx_freeze:未加载 QODBC 驱动程序
【发布时间】:2014-02-15 00:32:31
【问题描述】:

我的 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 创建可执行文件的位置),我会看到一堆 *.dll 文件,其中包含单词“sql”(qsqlodbc4.dll、QtSql4.dll...)

过去,我使用 cx_freeze 创建了一些 PyQT 应用程序,它总是运行良好。但是与 QtSql 模块一起,我总是收到上面的错误消息。

我的操作系统:Windows 7

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

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

亲切的问候

伯恩哈德

【问题讨论】:

  • 谢谢,我已经filed an issue在使用QtSql时自动复制插件。
  • 谢谢!我只是有同样的问题。即使所有文件都由 cx_freeze 自动复制到正确的文件夹并具有正确的大小,但用原始文件手动覆盖它们解决了问题! (也许您应该将您的解决方案添加为答案并接受它,以便更容易看到并且可以投票?)

标签: python qt pyqt cx-freeze qtsql


【解决方案1】:

这只能在你的开发者机器上工作,但是当你创建一个 exe 文件并在其他机器上运行这个文件时它不起作用。

我用pyinstaller,问题解决了。

只使用:

pyinstaller --onefile --windowed myscript.py

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 2014-07-17
    相关资源
    最近更新 更多