【问题标题】:Build a .exe file from .py with SQLite database使用 SQLite 数据库从 .py 构建 .exe 文件
【发布时间】:2017-10-30 11:14:42
【问题描述】:

程序进行约会并将其放入写入 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")]
)

但是数据库打不开

那么,如何解决呢?

【问题讨论】:

  • @MrGumble,编辑了我的问题,我解决了 TCL 错误,但是数据库仍然无法打开,您还有其他想法为什么它无法工作?

标签: python sqlite exe cx-freeze


【解决方案1】:

您没有在include_files 语句中包含您的SQLite 数据库文件。请参阅文档:http://cx-freeze.readthedocs.io/en/latest/faq.html#using-data-files

然而,更好的解决方案是提供一个选项,以便在需要时创建丢失的数据库文件。这将允许在您的脚本中定义数据库的 SCHEMA,并与您的程序逻辑保持一致。如果它需要填充数据,那么这可能不是最佳解决方案。

【讨论】:

    【解决方案2】:

    通过将整个“sqldrivers”文件夹从C:\Program Files\Python35\Lib\site-packages\PyQt5\plugins复制到 main.exe 目录解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多