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

Python Holidays库编译为exe后报错:找不到holidays.countries模块

问题:Python应用编译为exe后出现no module named holidays.countries错误

我用eel、pandas和holidays库开发了一款工具,用于获取波兰公共假日并完成报表计算。在PyCharm解释器中运行一切正常,可正常获取假日并生成报表,但将应用编译为exe后,执行报表生成函数时返回错误:no module named holidays.countries。

获取假日的代码

from datetime import datetime as dt
import holidays

holi = holidays.Poland(years=dt.today().year)

# 之前也用过这段代码,结果完全一致
# holidays.country_holidays('PL', years=dt.today().year) 

编译使用的命令

python -m eel main.py web --onefile --noconsole

补充信息

  • 使用企业内网仓库,无法访问外部公共仓库
  • PIP版本:23.3.2,Holidays版本:0.41

解决方法

1. 打包时手动指定隐藏导入

PyInstaller(eel底层依赖该工具)默认不会自动检测holidays库的countries子模块,导致打包后缺失。修改打包命令,添加hidden-import参数指定需要打包的子模块:

python -m eel main.py web --onefile --noconsole --hidden-import=holidays.countries --hidden-import=holidays.countries.poland

2. 通过.spec文件自定义打包配置

如果需要更灵活的打包配置,可先生成spec文件:

python -m eel main.py web --onefile --noconsole --spec

打开生成的main.spec文件,找到hiddenimports列表,添加缺失的模块:

hiddenimports=['holidays.countries', 'holidays.countries.poland'],

然后使用spec文件执行打包:

pyinstaller main.spec

3. 验证内网仓库的holidays包完整性

由于使用企业内网仓库,可能存在包不完整的情况,可强制重新安装holidays库确保依赖完整:

pip install holidays==0.41 --force-reinstall

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 22:05:12