You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用auto-py-to-exe打包单文件EXE后SQLite无法打开数据库文件

解决单文件打包EXE后sqlite数据库无法打开的问题

问题原因

使用auto-py-to-exe单文件模式打包时,PyInstaller会将所有依赖资源解压到系统临时目录,而非EXE所在目录。你的代码中使用相对路径config\\data.sqlite,运行打包后的EXE时,这个路径指向的是当前工作目录,而非临时目录中的数据库文件,因此报错sqlite3.OperationalError: unable to open database file。

解决步骤

1. 修改数据库连接代码

在config/assets.py中,调整数据库路径的获取逻辑,适配脚本运行和打包后两种场景:

import os
import sys
import sqlite3

class getImages():
    def __init__(self) -> None:
        '''Creates a dictionary of dictionaries containing image data.

        Attributes:
            images: list of image data
        '''
        # 获取基准路径:打包后用临时目录,脚本运行时用当前文件所在目录
        base_path = getattr(sys, '_MEIPASS', os.path.dirname(os.path.abspath(__file__)))
        # 拼接数据库文件的完整路径
        db_file_path = os.path.join(base_path, 'data.sqlite')
        self.connection = sqlite3.connect(db_file_path)
        self.cursor = self.connection.cursor()

2. 正确配置auto-py-to-exe的资源添加规则

打开auto-py-to-exe,按以下步骤配置:

  • 确认选择One File模式
  • 在Additional Files区域,点击Add Files,选择项目中的config/data.sqlite
  • 在该文件对应的Destination输入框中填写config/,确保打包后数据库文件被放到临时目录的config子目录下
  • 若项目中还有其他资源(如assets/fonts/inpin.ttf),按同样方式添加:选择文件,Destination填写对应目录(如assets/fonts/)
  • 重新执行打包操作

验证

打包完成后运行EXE文件,此时程序会正确找到临时目录中的数据库文件,连接错误即可解决。

内容的提问来源于stack exchange,提问作者N4GR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 13:21:05