程序进行约会并将它们放入计划中,这些计划是用QsQLite数据库编写的。该程序从.py运行,但我需要它在.exe中。 我使用cx_Freeze创建.exe文件,但该程序不生成SQLite数据库。 所以这是我的设置文件:
from cx_Freeze import setup, Executable
import os
import sys
os.environ['TCL_LIBRARY'] = r'C:\Program Files\Python35\tcl\tcl8.6'
os.environ['TK_LIBRARY'] = r'C:\Program Files\Python35\tcl\tk8.6'
build_exe_options = {"packages": [
'os','sys','sqlite3'], 'include_files': [os.path.join(sys.base_prefix, 'DLLs', 'sqlite3.dll'), 'main.py','util.py','data.db']}
setup(
name = "Eclients",
version = "0.1",
options = {"build_exe": build_exe_options},
executables = [Executable("main.py")]
)
但数据库无法打开
那么,它如何解决?
答案 0 :(得分:1)
您未在include_files
语句中包含SQLite数据库文件。请参阅文档:http://cx-freeze.readthedocs.io/en/latest/faq.html#using-data-files
然而,更好的解决方案是提供在需要时创建缺少的数据库文件的选项。这样就可以在脚本中定义数据库的SCHEMA,并与程序逻辑保持一致。如果需要填充数据,这可能是一个不太理想的解决方案。
答案 1 :(得分:0)
通过将整个'sqldrivers'文件夹从C:\Program Files\Python35\Lib\site-packages\PyQt5\plugins
复制到main.exe目录来解决此问题。