chromadb 'ONNXMiniLM_L6_V2' 嵌入未使用 pyinstaller 定义

问题描述 投票:0回答:1

我正在使用提供的方法为我的 Python FastAPI 项目创建可执行文件。由于它是一个基于人工智能的项目,因此它包含用于处理嵌入的矢量数据库。我正在使用

chromadb
包来处理嵌入。当我创建构建时,它已成功创建。但是当我尝试运行项目的 exe 文件时,它到达了
import chromadb
行。它会生成如下异常:

File "chromadb\utils\embedding_functions\__init__.py", line 57, in DefaultEmbeddingFunction
NameError: name 'ONNXMiniLM_L6_V2' is not defined
[PYI-12904:ERROR] Failed to execute script 'main' due to unhandled exception!

我已手动检查我是否可以使用标准

uvicorn
和使用
Docker
来运行我的项目。但是当我尝试使用
pyinstaller
打包我的项目时,它会生成异常。

附注我在创建可执行文件时激活环境,以便所有包都绑定到我的应用程序中(也尝试过不使用它)。

如果需要任何进一步的信息,我也可以这样做。

最好的, 穆罕默德·哈桑

这是我尝试创建项目的可执行文件的方法:

pyinstaller --name tempname --onefile --specpath . main.py

我也尝试过:

pyinstaller -F main.py --clean

我已经手动检查了

ONNXMiniLM_L6_V2
错误,我可以看到这些嵌入是可用的。 我也安装了支持包
onnxruntime

期望

当我为 FastAPI 应用程序创建可执行文件时,我希望可执行文件能够运行,并在

pyinstaller
的帮助下创建 exe 时激活环境。

fastapi pyinstaller exe chromadb sentence-transformers
1个回答
0
投票

您应该将 ChromaDB

onnx_mini_lm_l6_v2
包含在 .spec 文件的隐藏导入中:
hiddenimports=["chromadb.utils.embedding_functions.onnx_mini_lm_l6_v2",]
根本原因是pyinstaller在构建时没有包含这个文件,但是通过python动态导入在默认模型中需要类
ONNXMiniLM_L6_V2 

请尝试此代码并给我结果,谢谢!

© www.soinside.com 2019 - 2024. All rights reserved.