#使用python的pyinstaller打包文件成exe文件运行时找不到文件路径问题解决方法

问题原因:
开发环境结构:
D:/Project/
├── src/
│ └── main.py
├── BpNet/
│ └── BP_zhanse/
│ └── BP_zhanse.h5
└── …

打包后结构:
C:/Temp/_MEI12345/ # sys._MEIPASS
├── main.exe
├── BpNet/
│ └── BP_zhanse/
│ └── BP_zhanse.h5
└── …
打包后程序运行时,sys._MEIPASS指向C:/Temp/_MEI12345/,而不是D:/Project/,所以相对路径会找不到文件。

解决方法:

  1. 将文件路径全部换为相对路径,比如我的文件相对路径为filepath=r"8\test.md"
  2. 使用下面的函数代码
    import os
    import sys
    
    _PROJECT_ROOT = os.path.abspath(
        os.path.join(os.path.dirname(__file__), '..', '..')
    )  # 指向 D:\VScode_files\GUI_QT5\Final
    
    def resource_path(relative_path: str) -> str:
        if getattr(sys, 'frozen', False) and hasattr(sys, '_MEIPASS'):
            base_path = sys._MEIPASS
        else:
            base_path = _PROJECT_ROOT
        return os.path.join(base_path, relative_path)on

  1. 将所有涉及到路径的导入都换成使用resource_path函数,filepath=resource_path(your_filepath)
  2. 然后再使用pyinstaller打包
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐