Exchangelib 和 Py 安装程序 - ZoneInfo - Tzdata - UTC 问题
exchangelib and pyinstaller - zoneinfo - tzdata - UTC issue
在我的 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文件进行打包,将配置中的资源文件进行打包
二进制文件=[('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 的目录。
在我的 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文件进行打包,将配置中的资源文件进行打包
二进制文件=[('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 的目录。