使用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 文件里。

相关推荐
SkylerHu5 小时前
tornado+gunicorn部署设置max_body_size
python·tornado·gunicorn
独行soc6 小时前
2025年渗透测试面试题总结-234(题目+回答)
网络·python·安全·web安全·渗透测试·1024程序员节·安全狮
木头左6 小时前
年化波动率匹配原则在ETF网格区间选择中的应用
python
清空mega6 小时前
从零开始搭建 flask 博客实验(3)
后端·python·flask
程序员小远7 小时前
7个常见的Jmeter压测问题
自动化测试·软件测试·python·测试工具·测试用例·压力测试·性能测试
红尘炼丹客7 小时前
《DeepSeek-OCR: Contexts Optical Compression》速览
人工智能·python·自然语言处理·ocr
☼←安于亥时→❦7 小时前
Playwright 安装与使用
python·playwright
大佬,救命!!!7 小时前
python实现象棋
开发语言·python·学习笔记·pygame·少儿编程·记录成长
棉猴7 小时前
《pygame中Sprite类实现多帧动画》注-通过多张序列帧显示动画2-2
开发语言·python·游戏·游戏程序·pygame