使用pyinstaller对gradio和chromadb进行打包

解决gradio和chromadb的打包问题

背景

python项目里包含了gradio和chromadb模块,使用pyinstaller后总有模块找不到,这里分享一个办法一招解决。

问题

gradio和gradio_client模块

gradio在被打进exe后执行报错:

bash 复制代码
No such file or directory: gradio_client\types.json

这个主要原因是gradio和gradio_client相关模块没有被打进去。

还有一类报错:

bash 复制代码
[Errno 2] No such file or directory: gradio\blocks_events.pyc

这是因为在执行时默认去查找pyc文件,找不到报错。

chromadb模块

chromadb在被打进exe后执行报错:

bash 复制代码
ModuleNotFoundError: No module named'chromadb.telemetry.product.posthog'

这主要是因为chromadb的相关子模块没有被包进去。

解决

针对这两类问题,解决方案分两步:

1.输出.spec文件

bash 复制代码
pyinstaller --collect-data=gradio_client --collect-data=gradio --collect-data=chromadb -F rag_demo.py

2.在生成的rag_demo.spec文件中

Analysis部分添加

bash 复制代码
module_collection_mode={ 'gradio': 'py',}

因为我们希望 gradio 包的 .py 文件以某种特定方式被收集,比如直接将 .py 文件保留在打包后的文件结构中,而不是被编译成 .pyc 文件或者被压缩进 PYZ 文件里。

相关推荐
极客数模9 分钟前
【2026美赛赛题初步翻译F题】2026_ICM_Problem_F
大数据·c语言·python·数学建模·matlab
小鸡吃米…2 小时前
机器学习中的代价函数
人工智能·python·机器学习
Li emily3 小时前
如何通过外汇API平台快速实现实时数据接入?
开发语言·python·api·fastapi·美股
m0_561359673 小时前
掌握Python魔法方法(Magic Methods)
jvm·数据库·python
Ulyanov3 小时前
顶层设计——单脉冲雷达仿真器的灵魂蓝图
python·算法·pyside·仿真系统·单脉冲
2401_838472514 小时前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
CoLiuRs4 小时前
语义搜索系统原理与实现
redis·python·向量·es
zhihuaba4 小时前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
u0109272714 小时前
Python Web爬虫入门:使用Requests和BeautifulSoup
jvm·数据库·python
Stream_Silver5 小时前
【Agent学习笔记3:使用Python开发简单MCP服务】
笔记·python