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

64位Python+PyInstaller打包pysqlcipher应用DLL加载失败求助

解决64位PyInstaller打包pysqlcipher3的DLL缺失问题
  • 确认依赖的DLL文件
    用Dependency Walker或Process Monitor工具打开你编译的_sqlite3.cp39-win_amd64.pyd,查看它依赖的所有DLL文件。pysqlcipher3编译后通常依赖64位的sqlcipher.dll以及OpenSSL相关的DLL(如libcrypto-*.dll),这些文件在开发机上存在,但目标机没有,且PyInstaller未自动收集。注意必须使用编译pysqlcipher3时配套的64位版本DLL,不能用系统自带的sqlite.dll。

  • 强制PyInstaller包含缺失的DLL

    • 方式一:修改spec文件
      1. 生成spec文件:执行pyinstaller test.py得到test.spec
      2. 打开spec文件,在Analysis的binaries字段中添加DLL路径,示例:
        a = Analysis(
            ['test.py'],
            pathex=[],
            binaries=[('你的DLL路径/sqlcipher.dll', '.')],  # 将DLL复制到输出根目录
            datas=[],
            # 其他原有内容保持不变
        )
        
      3. 用spec文件重新打包:pyinstaller test.spec
    • 方式二:命令行直接指定
      打包时添加--add-binary参数:pyinstaller --add-binary "你的DLL路径/sqlcipher.dll;." test.py
  • 验证打包后的文件结构
    打包完成后,检查dist目录下的程序文件夹,确保添加的DLL文件和pysqlcipher3目录下的_sqlite3.cp39-win_amd64.pyd处于同一层级目录。

  • 检查环境一致性
    确保编译pysqlcipher3使用的Python 3.9.4 x64和PyInstaller打包使用的是同一个Python环境,避免版本不匹配导致的依赖异常;同时确认编译pysqlcipher3时使用的是纯64位的sqlcipher库,未混用32位组件。

  • Inno Setup打包注意事项
    在Inno Setup脚本中,确保将dist目录下的所有文件(包括新增的DLL)完整打包,脚本示例:

    [Files]
    Source: "dist\test\*"; DestDir: "{app}"; Flags: recursesubdirs createallsubdirs
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:47:55