【问题标题】:exchangelib and pyinstaller - zoneinfo - tzdata - UTC issueexchangelib 和 pyinstaller - zoneinfo - tzdata - UTC 问题
【发布时间】:2021-08-15 02:36:46
【问题描述】:

在我的 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 导入,同样的问题。

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

【问题讨论】:

    标签: python pyinstaller exchangelib zoneinfo tzdata


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • @Fabio Fracassi
      • 我用更多细节更新了我的原始答案。
      【解决方案3】:

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

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

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

      【讨论】:

      • 这应该是公认的答案。建议复制tzdata 文件夹的解决方法比这要笨重得多。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-25
      • 2021-11-07
      • 1970-01-01
      • 2018-02-08
      • 1970-01-01
      • 2017-04-07
      相关资源
      最近更新 更多