3

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

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

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

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

4

3 回答 3

3

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

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

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

于 2021-06-11T14:30:39.543 回答
2

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

于 2021-05-26T19:55:21.957 回答
0

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

二进制文件=[('C:\ProgramData\Anaconda3\Lib\site-packages\tzdata\zoneinfo\UTC','tzdata\zoneinfo')] pathex=['C:\ProgramData\Anaconda3\Lib\site-packages\tzdata \zoneinfo'] hiddenimports=['tzdata.zoneinfo']

于 2021-06-07T12:11:45.783 回答