python3.6引入exchangelib依赖后打包报错exchangelib.errors.UnknownTimeZone: No time zone found with key UTC

错误信息

python3.6环境下引用exchangelib 4.6 版本,使用pyinstaller打包后报错:No timzone found with key UTC

解决方案

image.png

图片说明:在pyinstaller打包使用的spec文件中加入上述配置即可

原因分析

仔细查看报错信息会发下如下提示


image.png

可以看到错误出在exchangelib\ewsdatetime.py文件中引入的backports.zoneinfo,查看exchangelib及backports.zoneinfo源码如下:


image.png

通过代码注释,能够看出产生此异常有三种可能:包名不存在(tzdata没有安装)、resource_name不存在、编码错误(非UTF-8编码)
根据提示一一排除产生原因,发现打包后的项目目录里没有引入tzdata包,手动修改spec文件增加引入,问题解决!

你可能感兴趣的:(python3.6引入exchangelib依赖后打包报错exchangelib.errors.UnknownTimeZone: No time zone found with key UTC)