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

PyInstaller打包Python项目时holidays模块找不到的问题求助

PyInstaller打包时无法找到holidays模块的解决方法

问题背景

基于Anaconda虚拟环境开发的tkinter GUI项目,依赖pandas与holidays模块,使用PyInstaller打包时,已通过pyinstaller main.py --hidden-import openpyxl.cell._writer -w解决openpyxl缺失问题,但添加--hidden-import holidays后仍报错:

Traceback (most recent call last): File "kiesel_gui.py", line 3, in <module> import kiesel_simulator File "PyInstaller\loader\pyimod02_importers.py", line 391, in exec_module File "kiesel_simulator.py", line 5, in <module> import seasonality_builder as src File "PyInstaller\loader\pyimod02_importers.py", line 391, in exec_module File "seasonality_builder.py", line 4, in <module> import holidays ModuleNotFoundError: No module named 'holidays'

解决步骤

  • 确保激活正确的Anaconda虚拟环境
    打包前必须激活项目对应的虚拟环境,避免PyInstaller调用全局Python环境的依赖。激活命令:

    conda activate 你的虚拟环境名
    
  • 直接调用虚拟环境内的PyInstaller
    部分情况下激活环境后仍可能调用全局PyInstaller,可使用虚拟环境内的PyInstaller完整路径执行打包,示例路径:

    C:\Users\你的用户名\anaconda3\envs\你的环境名\Scripts\pyinstaller.exe main.py --hidden-import openpyxl.cell._writer --hidden-import holidays -w
    
  • 检查holidays模块的安装位置
    在激活的虚拟环境中执行以下命令,确认holidays安装在当前虚拟环境的site-packages下:

    pip show holidays
    

    若Location显示为全局Python路径,需重新在虚拟环境内安装:

    pip install holidays
    
  • 使用.spec文件手动配置隐藏导入
    命令行参数不生效时,可通过spec文件强制指定依赖:

    1. 生成spec文件:
      pyinstaller main.py -w
      
    2. 打开生成的main.spec文件,找到hiddenimports字段,修改为:
      hiddenimports=['openpyxl.cell._writer', 'holidays']
      
    3. 基于spec文件重新打包:
      pyinstaller main.spec
      
  • 清除缓存后重新打包
    旧缓存可能导致依赖收集异常,添加--clean参数清除缓存后重新打包:

    pyinstaller main.py --hidden-import openpyxl.cell._writer --hidden-import holidays -w --clean
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 10:52:45