使用PyInstaller打包含LangChain-Chroma的Python离线LLM文件问答应用时出现ONNXMiniLM_L6_V2未定义的NameError错误
PyInstaller打包含LangChain-Chroma的Python离线LLM文件问答应用时出现ONNXMiniLM_L6_V2未定义的NameError错误
我正在开发一个基于Python和Tkinter的应用,用户可以上传文件,通过离线LLM进行问答,我们用langchain_chroma处理嵌入。我没法分享完整源码,但可以给出导入部分,应该能帮到排查问题:
1. populate_database.py 文件
import argparse import os import shutil from langchain_community.document_loaders import PyPDFDirectoryLoader from langchain_text_splitters import RecursiveCharacterTextSplitter from langchain.schema.document import Document from embedding import embedding_function from langchain_community.vectorstores import Chroma from langchain_community.document_loaders import UnstructuredMarkdownLoader from langchain_community.document_loaders import UnstructuredWordDocumentLoader
2. embedding.py 文件
from transformers import AutoModelForCausalLM, AutoTokenizer, AutoModel import torch
3. main.py 文件
from time import sleep import tkinter as tk from tkinter import scrolledtext, filedialog import torch from transformers import AutoTokenizer, AutoModelForCausalLM, pipeline from langchain_chroma import Chroma from langchain.prompts import PromptTemplate from populate_database import add_documents_to_chroma, clear_database from embedding import embedding_function import gc
我们用到了两个模型:
- 用于用户交互的LLM:Qwen2.5-3B
- 处理嵌入的模型:multilingual-e5-large
项目结构如下:
- chroma(数据库文件夹)
- data(测试用的示例PDF文件夹)
- Qwen2.5-3B(LLM模型文件夹)
- multilingual-e5-large(嵌入模型文件夹)
- dist(打包生成的文件夹)
- build(打包生成的文件夹)
- embedding.py
- main.py
- populate_database.py
我使用的打包命令很简单:
pyinstaller main.py --onefile -w
完整的错误信息如下:
NameError: name 'ONNXMiniLM_L6_V2' is not defined Traceback (most recent call last): File "main.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 384, in exec_module File "langchain_chroma\__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 384, in exec_module File "langchain_chroma\vectorstores.py", line 25, 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 384, in exec_module File "chromadb\__init__.py", line 3, 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 384, in exec_module File "chromadb\api\__init__.py", line 34, 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 384, in exec_module File "chromadb\api\models\Collection.py", line 3, 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 384, in exec_module File "chromadb\api\models\CollectionCommon.py", line 100, in <module> File "chromadb\api\models\CollectionCommon.py", line 112, in CollectionCommon File "chromadb\utils\embedding_functions\__init__.py", line 57, in DefaultEmbeddingFunction NameError: name 'ONNXMiniLM_L6_V2' is not defined
我已经试过网上针对这个问题的相关解决方案,但都没有成功,希望能得到大家的帮助。
备注:内容来源于stack exchange,提问作者Nigel Mathews
相关产品推荐
相关产品推荐

