You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyCharm正常运行的Python程序用PyInstaller打包EXE后报ModuleNotFoundError

解决PyInstaller打包后找不到'main_controller'模块的问题

针对打包后出现的ModuleNotFoundError,可以按以下步骤排查修复:

  • 调整代码导入方式
    如果main.py中使用了相对导入(比如from . import main_controller),PyInstaller对这类导入的兼容性较差,建议改为绝对导入:先确保项目根目录在Python的sys.path中,然后使用import main_controller,或者如果main_controller属于某个子包,写全路径如from your_project_root import main_controller(替换your_project_root为实际项目根目录名称)。

  • 确认模块结构合法性
    检查main_controller.py(或其所在包)的位置:它需要和main.py处于同一层级,或者所在目录包含空的__init__.py文件(用来标识该目录为Python模块包)。

  • 修正.spec文件配置
    手动修改spec文件可能存在配置疏漏,建议重新生成并精准配置:

    1. 删除旧的main.spec文件,在项目根目录执行命令:pyinstaller main.py生成新的spec文件。
    2. 打开新生成的main.spec,找到Analysis段,修改以下参数:
      • pathex:添加项目根目录的绝对路径,示例:pathex=['C:\\Users\\xxx\\your_project_folder']
      • hiddenimports:明确添加'main_controller',若它属于子包则写完整路径(如'sub_package.main_controller')
      • 注意main_controller属于代码模块,不要加到datas参数中(datas用于配置非代码资源如图片、配置文件)。
  • 在项目根目录执行打包命令
    打包路径错误是常见诱因,切换到包含main.py和main_controller的项目根目录后,再执行打包命令:
    单文件打包:pyinstaller --onefile main.py
    用spec文件打包:pyinstaller main.spec

  • 清理缓存后重新打包
    PyInstaller的缓存文件可能残留旧配置,删除打包生成的build、dist文件夹,以及项目中的__pycache__目录,再重新执行打包操作。

  • 排查虚拟环境问题
    若使用虚拟环境,确保打包时已激活对应环境,且所有依赖(包括main_controller相关的本地模块)都已在该环境中正常识别。避免混用全局环境和虚拟环境的依赖配置。

内容的提问来源于stack exchange,提问作者Jessica Wassif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 14:42:34