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

PyInstaller打包含g4f LocalClient脚本时libllmodel.dll缺失问题修复

问题描述

切换使用g4f API的LocalClient()类后,用PyInstaller编译Python脚本为exe时出现如下错误:

Traceback (most recent call last):
  File "PyInstaller\loader\pyimod03_ctypes.py", line 53, in __init__
  File "ctypes\__init__.py", line 376, in __init__
FileNotFoundError: Could not find module 'C:\Users\USER\AppData\Local\Temp\_MEI184642\gpt4all\llmodel_DO_NOT_MODIFY\build\libllmodel.dll' (or one of its dependencies). Try using the full path with constructor syntax.

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "My_Diary.py", line 1, in <module>
    import tkinter, tkinter.filedialog, tkinter.messagebox, pickle, os, sys, docx, typing, My_Diary_interface, My_Diary_window, CTkMenuBar, locale, CTkMessagebox, My_Diary_converterer, My_Diary_AI, tkterminal, My_Diary_PDF_viewer, asyncio
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "My_Diary_AI.py", line 1, in <module>
    import g4f, g4f.local, typing, My_Diary_AI_interface, asyncio
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "g4f\__init__.py", line 6, in <module>
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "g4f\models.py", line 5, in <module>
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "g4f\Provider\__init__.py", line 42, in <module>
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "g4f\Provider\Local.py", line 5, in <module>
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "g4f\locals\provider.py", line 5, in <module>
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "gpt4all\__init__.py", line 1, in <module>
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "gpt4all\gpt4all.py", line 23, in <module>
  File "<frozen importlib._bootstrap>", line 1176, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1147, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 690, in _load_unlocked
  File "PyInstaller\loader\pyimod02_importers.py", line 385, in exec_module
  File "gpt4all\_pyllmodel.py", line 71, in <module>
  File "gpt4all\_pyllmodel.py", line 61, in load_llmodel_library
  File "PyInstaller\loader\pyimod03_ctypes.py", line 55, in __init__
pyimod03_ctypes.install.<locals>.PyInstallerImportError: Failed to load dynlib/dll 'C:\\Users\\USER\\AppData\\Local\\Temp\\_MEI184642\\gpt4all\\llmodel_DO_NOT_MODIFY\\build\\libllmodel.dll'. Most likely this dynlib/dll was not found when the application was frozen.

此前使用g4f API的应用可正常打包,仅切换为LocalClient()后出现该问题。

解决方案

1. 手动添加dll文件到打包资源

  • 找到Python环境中libllmodel.dll的路径,通常位于你的Python安装目录\Lib\site-packages\gpt4all\llmodel_DO_NOT_MODIFY\build\libllmodel.dll
  • 使用PyInstaller的--add-data参数打包,Windows系统命令示例:
    pyinstaller --add-data "C:\Python\Lib\site-packages\gpt4all\llmodel_DO_NOT_MODIFY\build\libllmodel.dll;gpt4all\llmodel_DO_NOT_MODIFY\build" My_Diary.py
    
    (注意Windows用分号分隔源路径和目标路径,Linux/macOS用冒号)

2. 通过spec文件配置打包

  • 先生成spec文件:
    pyinstaller --name My_Diary My_Diary.py
    
  • 打开生成的My_Diary.spec文件,在datas列表中添加dll路径配置:
    datas=[('C:\\Python\\Lib\\site-packages\\gpt4all\\llmodel_DO_NOT_MODIFY\\build\\libllmodel.dll', 'gpt4all/llmodel_DO_NOT_MODIFY/build')],
    
  • 用spec文件重新打包:
    pyinstaller My_Diary.spec
    

3. 检查并补充dll依赖

  • 若仍报错,可能是libllmodel.dll存在缺失的依赖库,用Dependency Walker工具扫描该dll,找出缺失的依赖文件,同样通过--add-data或spec文件添加到打包资源中。

4. 代码中动态指定dll路径(备选)

  • 在导入g4f前,手动设置dll路径环境变量:
    import os
    import sys
    
    if hasattr(sys, '_MEIPASS'):
        # 打包后运行时的临时目录
        dll_path = os.path.join(sys._MEIPASS, 'gpt4all', 'llmodel_DO_NOT_MODIFY', 'build', 'libllmodel.dll')
        os.environ['LLMODEL_LIBRARY'] = dll_path
    
    import g4f
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 06:14:53