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

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')

相关文章:

  • 用mediamtx搭建简易rtmp,rtsp视频服务器
  • FFmpeg学习笔记
  • SDL_CreateRendererWithProperties报错Parameter ‘window‘ is invalid
  • Linux 第三阶段课程:数据库基础与 SQL 应用
  • Domain Adaptation in Vision-Language Models (2023–2025): A Comprehensive Review
  • NLP学习路线图(十四):词袋模型(Bag of Words)
  • gin 框架
  • 【Tauri2】049——upload
  • LangChain-结合智谱AI大模型实现自定义tools应用实例
  • 【Netty系列】自定义协议
  • CM3内核寄存器
  • latex figure Missing number, treated as zero. <to be read again>
  • Android的uid~package~pid的关系
  • NodeJS全栈开发面试题讲解——P9性能优化(Node.js 高级)
  • 经典面试题:一文了解常见的缓存问题
  • Spark on Hive表结构变更
  • 性能优化 - 案例篇:缓存
  • NodeJS全栈开发面试题讲解——P10微服务架构(Node.js + 多服务协作)
  • 聊一聊接口测试中缓存处理策略
  • 多模态大语言模型arxiv论文略读(102)
  • 做网站设计多少钱/网站运维
  • 建设一个怎样的自己的网站/产品运营方案
  • 关于小城镇建设网站/百度sem推广
  • 网站建设师/网站seo关键词设置
  • wordpress 断点调试/郑州关键词优化费用
  • 织梦网站模板免费/百度推广下载