微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

exchangelib 和 pyinstaller - zoneinfo - tzdata - UTC 问题

如何解决exchangelib 和 pyinstaller - zoneinfo - tzdata - UTC 问题

在我的 python 项目中,我使用的是 exchangelib,我需要创建一个 exe 文件。 使用 pyinstaller --onefile 我有 UTC 错误(一般是 tzdata)- “关键 UTC 中没有时区”。 简化所有并关注此问题 https://github.com/ecederstrand/exchangelib/issues/897 我注意到这个简单代码的问题是一样的:

from zoneinfo import ZoneInfo
utc = ZoneInfo('UTC')

我也尝试过 py2exe、cx_freeze、强制 tzdata 导入,同样的问题。

我花了很多时间寻找解决方法,我想分享我的临时解决方案,同时也讨论其他替代解决方案。

解决方法

我发现的解决方法是使用 pyinstaller --onedir (https://pyinstaller.readthedocs.io/en/stable/usage.html) 并在 pyinstaller 创建的主目录中手动复制 tzdata 文件夹 (\Python\Python39\Lib\site-packages\tzdata)。 你有更优雅的其他解决方案吗?

,

我使用了spec文件进行了打包,在配置中打包了资源文件。

binaries=[('C:\ProgramData\Anaconda3\Lib\site-packages\tzdata\zoneinfo\UTC','tzdata\zoneinfo')] pathex=['C:\ProgramData\Anaconda3\Lib\site-packages\tzdata\zoneinfo'] hiddenimports=['tzdata.zoneinfo']

,

在探索了不同的选项后,这对我有用:

pyinstaller --collect-all tzdata --onefile file_name.py

PS:我一直面临这个问题,并来到这里探索 pyinstaller。您的解决方案也有效,但它是一个目录,我希望它是 exe。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。