cx_freeze python sqlite3数据库在构建后不起作用.exe?



基本上我有一个使用sqlite3数据库的pyqt应用程序,现在我使用Cx_Freeze将其转换为可执行文件。

我发现,当数据库和查询以.py的形式运行时,它们可以完美地运行,但在cx_freeze转换为.exe后,gui可以完美地工作,但数据库不会响应任何查询。

以下是设置脚本的代码:

from cx_Freeze import setup, Executable
# Dependencies are automatically detected, but it might need
# fine tuning.
buildOptions = dict(packages = [],
    excludes = [],
    includes = ["sip", "PyQt5.QtSql"],
    include_files = ["tpaData.db"])
import sys
base = 'Win32GUI' if sys.platform=='win32' else None
executables = [Executable('testTpa.py', base=base)]
setup(
    name='Tpa APP',
    version = '0.1',
    description = 'A PyQt TPA Program',
    options = dict(build_exe = buildOptions),
    executables = executables
)

以下是我用来实例化数据库和应用程序的代码:

def __init__(self, dialog):
        Ui_Form.__init__(self)
        self.setupUi(dialog)
        self.createConnection()
def createConnection(self):
        self.db = QtSql.QSqlDatabase.addDatabase('QSQLITE')
        self.db.setDatabaseName("tpaData.db")
        self.db.open()
        self.query = QtSql.QSqlQuery()
        self.query.exec_("create table doses(dose text, bolus text, discard text, remaining text, time1 text, time2 text, time3 text, comment text)")

稍后在应用程序中,我使用query.prepare方法生成一个输入字符串,然后使用query.bind方法将值绑定到query.prepale字符串。最后,我使用query.exec_()提交准备好的字符串。

在开发环境(.py文件)正常工作的情况下,只需发布cx_freeze即可失败。

提前感谢您的帮助。

cx_freeze不使用库数据库的驱动程序复制文件夹。例如,如果您将它们从"*C:\Python27\Lib\site-packages\PyQt4\plugins\sqldrivers*"复制到构建目录中的目录"sqldrivers",则应该可以工作。我也有类似的情况,但对于PySide,它是有效的。

在这里找到了我的问题的解决方案,只是使用py2exe或pyinstaller使其可分发,显然我使用的Cx_freeze版本与我的python版本不兼容。

最新更新