使用pyinstaller对gradio和chromadb进行打包

news/2025/2/24 1:51:44

解决gradio和chromadb的打包问题

  • 背景
  • 问题
    • gradio和gradio_client模块
    • chromadb模块
  • 解决

背景

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

问题

gradio和gradio_client模块

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

No such file or directory: gradio_client\types.json

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

还有一类报错:

[Errno 2] No such file or directory: gradio\blocks_events.pyc

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

chromadb模块

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

ModuleNotFoundError: No module named'chromadb.telemetry.product.posthog'

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

解决

针对这两类问题,解决方案分两步:
1.输出.spec文件

pyinstaller --collect-data=gradio_client --collect-data=gradio --collect-data=chromadb -F rag_demo.py

2.在生成的rag_demo.spec文件中
Analysis部分添加

module_collection_mode={ 'gradio': 'py',}

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


http://www.niftyadmin.cn/n/5863916.html

相关文章

【Redis】基础知识入门

文章目录 Redis 入门SQL && NoSQLRedis 介绍 Redis 常见命令Redis数据结构介绍通用命令String 类型基本内容介绍常见的命令key 的结构 Hash类型基本内容介绍常见命令 List类型基本内容介绍常见命令 Set类型基本内容介绍常见命令 SortedSet 类型基本内容介绍常见命令 Re…

迪威模型:引领 3D 模型轻量化技术革新

在数字化时代,3D 模型的应用领域愈发广泛,从影视制作、游戏开发到工业设计、建筑仿真等,都离不开 3D 模型的支持。然而,随着模型复杂度的不断提高,文件体积也日益庞大,这给存储、传输和加载带来了极大的挑战…

leetcode刷题记录(一百一十五)——64. 最小路径和

(一)问题描述 64. 最小路径和 - 力扣(LeetCode)64. 最小路径和 - 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下…

51单片机-80C51的串行口

目录 1、80C51的串行口 1.1、80C51串行口的控制寄存器 1.2、80C51串行口的工作方式 1.3、波特率的计算 1.4、串口如何使用 2、单片机与单片机的通信 1、80C51的串行口 有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一个地址99H;接收器是双缓冲结构;发送缓冲器,…

使用postman测试api接口基本步骤

测试一个已写好的 API 接口需要系统性地验证其功能、性能、安全性及异常处理能力。以下是使用 Postman 进行 API 接口测试的详细步骤和注意事项: 1. 确认接口文档 明确输入输出:了解接口的请求方法(GET/POST/PUT/DELETE)、URL、请…

12.Docker 的资源限制

Docker 的资源限制 Docker 的资源限制1. Stress-ng 压力测试工具2. OOM (Out of Memory Exception)3. 容器的内存限制4. 容器的 CPU 限制 Docker 的资源限制 官方文档:https://docs.docker.com/engine/containers/resource_constraints/ 默…

DNS, domain name system

DNS 是一种应用层协议和http/https是同一等级的 其传输层主要用的是udp,也可能用tcp DNS协议完成的作用:查 域名对应的 ip DNS服务器完成的作用:存储 域名 -> ip 的映射 DNS服务器有三个等级:根DNS,顶级域DNS&…

[Android]如何在代码中访问LayoutParams修改layout_weight?

代码如下&#xff0c;如何在代码中修改NumberWheelView的layout_weight&#xff1f; yearWheelView findViewById(R.id.wheel_picker_date_year_wheel); <com.github.androidpicker.wheelview.widget.NumberWheelViewandroid:id"id/wheel_picker_date_year_wheel&quo…