当前位置: 首页 > java >正文

flask pyinstaller打包exe,出现module not found问题

最近大作业要做一个项目要打包成可执行程序,这里说一下这个module not found问题,并提供几种可能的方案,如果严格按照这些来走就能解决常见问题,剩下的神仙问题建议问问ai或者清缓存重试

首先说一下目录问题,这应该是包括我(打包app.py)在内的大多数人遇见该报错问题的原因,提出两个原则:

1.依赖的文件/导入的库都放在app.py根目录backend下,因为打包的时候默认只会搜索这个路径,当然也有方法加入更深层的目录,但是不在这个讨论范围

2.根目录backend没有__init__,其他导入文件夹eg. my_utils有__init__文件,这种时候使用 from my_utils.entity import xxx,如果backend也有__init__,那么就应该使用 from backend.my_utils.entity import xxx 了

前置知识: python的模块的标准写法是文件夹下面有一个__init__.py文件,空文件也行,但是要有,这时IDE会把源文件夹图标显示成带有一个点的文件夹图标,表示识别为模块文件夹,

但是这对是IDE无所谓的,使用from my_utils.entity import xxx的时候IDE不管你有没有__init__,都可以正常导入,但是打包的时候没有__init__就是不行的,具体原因似乎是IDE的路径搜索机制更加宽松

图1 正确的一种目录展示

附: 使用共享文件夹时,简单的做法直接使用就行--add-data指定参数就行,但是如果要能读能写,建议使用  base_path = os.path.dirname(sys.executable) ,这是生成的exe文件夹,举个例子

if getattr(sys, 'frozen', False): #打包后会有这个frozen属性,IDE里面运行是没有的base_path = os.path.dirname(sys.executable)  # 打包后临时路径
else:base_path = os.path.dirname(os.path.abspath(__file__))  # 开发环境路径static_folder_path = os.path.join(base_path, 'your_folder_name')

http://www.xdnf.cn/news/10338.html

相关文章:

  • 论文阅读(六)Open Set Video HOI detection from Action-centric Chain-of-Look Prompting
  • 终结电源反接与压降损耗:理想二极管控制器深度解析
  • 4、数据标注的武林秘籍:Label-Studio vs CVAT vs Roboflow
  • Java求职者面试题详解:Spring、Spring Boot、MyBatis技术栈
  • unix/linux source 命令,其发展历程详细时间线、由来、历史背景
  • 宝塔专属清理区域,宝塔清理MySQL日志(高效释放空间)
  • 基于SpringBoot+Redis实现RabbitMQ幂等性设计,解决MQ重复消费问题
  • Amazon GameLift实战指南:低成本构建高并发全球游戏服务器架构
  • C++ IO流
  • ToolsSet之:XML工具
  • 用户资产化视角下开源AI智能名片链动2+1模式S2B2C商城小程序的应用研究
  • 工作流引擎-05-流程引擎(Process Engine)Camunda 8 协调跨人、系统和设备的复杂业务流程
  • 用mediamtx搭建简易rtmp,rtsp视频服务器
  • 头歌之动手学人工智能-Pytorch 之优化
  • 深入了解Vue2和Vue3的响应式原理
  • OneRef论文精读(补充)
  • 【设计模式-3.4】结构型——代理模式
  • 【位运算】两整数之和(medium)
  • DAY 34 超大力王爱学Python
  • 设计模式——责任链设计模式(行为型)
  • Linux线程同步实战:多线程程序的同步与调度
  • 在 SpringBoot+Tomcat 环境中 线程安全问题的根本原因以及哪些变量会存在线程安全的问题。
  • 代谢组数据分析(二十六):LC-MS/MS代谢组学和脂质组学数据的分析流程
  • 【Linux】shell的条件判断
  • gin 常见中间件配置
  • 系统思考:整体观和心智模式
  • Chrome 通过FTP,HTTP 调用 Everything 浏览和搜索本地文件系统
  • 基于STM32单片机CO气体检测
  • C56-亲自实现字符串拷贝函数
  • python连接邮箱,下载附件,并且定时更新的方案