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

PyInstaller打包exe后无法获取dateutil时区信息,求解决办法

解决PyInstaller打包dateutil时区丢失问题

问题原因

PyInstaller默认不会自动打包dateutil库中zoneinfo目录下的时区数据文件,这些文件是dateutil.tz.gettz()获取时区信息的依赖资源,缺失会导致无法加载时区,返回None。

解决办法

方法1:打包命令中添加--add-data参数

在打包命令里直接指定需要包含的时区数据目录,Windows系统下路径分隔符用分号;:

py -m PyInstaller --onefile --add-data "你的Python路径/Lib/site-packages/dateutil/zoneinfo;dateutil/zoneinfo" path/to/test.py --distpath resulting/path/folder

替换你的Python路径为实际路径,比如虚拟环境的venv\Lib\site-packages或者系统Python安装目录

方法2:通过.spec文件配置数据文件

  1. 先生成.spec文件:
py -m PyInstaller --onefile path/to/test.py --distpath resulting/path/folder
  1. 打开生成的test.spec文件,找到datas参数,添加时区数据目录:
a = Analysis(
    ['path/to/test.py'],
    pathex=[],
    binaries=[],
    datas=[('你的Python路径/Lib/site-packages/dateutil/zoneinfo', 'dateutil/zoneinfo')],  # 添加这一行
    ...
)
  1. 使用.spec文件重新打包:
py -m PyInstaller test.spec

方法3:安装dateutil的tzdata扩展包

如果你的dateutil版本>=2.5.0,可以安装带tzdata扩展的dateutil,它会自带完整的时区数据,PyInstaller能更好地识别:

pip install python-dateutil[tzdata]

安装完成后重新打包脚本即可。

验证

打包完成后运行生成的exe,应该输出tzfile('America/Los_Angeles'),而非None。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:22:46