用Pyinstaller打包时遇到No module named win32timezone问题

用Pyinstaller打包时遇到No module named win32timezone问题

    • Pyinstaller使用方法
    • 我遇到的问题
    • 解决办法

利用tkinter+python+pyinstaller实现了小工具的项目,没有pyinstaller打包时程序没有问题,打包后运行.exe过程中会在控制台打印错误。

Pyinstaller使用方法

我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:

  1. 单个py文件打包格式: pyinstaller -F test.py
  2. 多个.py文件打包命令格式如下 :
pyinstaller [主文件] -D -p [其他文件1] -p [其他文件2] --hidden-import [自建模块1] --hidden-import [自建模块2]

链接:Pyinstaller参数说明
使用-D 参数打包,会在根目录下的dist目录中生成一个文件夹,存放生成的 xxx.exe文件以及相关的依赖文件 (推荐使用-D 打包,-F 是打包成单一.exe文件)

我遇到的问题

我的项目结构:
用Pyinstaller打包时遇到No module named win32timezone问题_第1张图片
打包命令如下:

(test) D:\ProgramData\NewTachometer>pyinstaller -D -n volemeter -i ana.ico  ma
in.py -p mainFunc.py -p GlobalVar.py -p calendarModule.py -p SiftPic.py -p CarsD
ata.py -p GenerateExcel.py --hidden-import mainFunc --hidden-import GlobalVar --
hidden-import calendarModule --hidden-import SiftPic --hidden-import CarsData --
hidden-import GenerateExcel 

打包成功,没有报错:
用Pyinstaller打包时遇到No module named win32timezone问题_第2张图片
运行.exe程序时,在控制台打印错误信息如下:
用Pyinstaller打包时遇到No module named win32timezone问题_第3张图片
从打印信息知道,是因为没有导入win32timezone模块从而发生错误的。检查代码发现,是由于从.mdb数据库文件中读出的时间信息pywintypes.datetime(2019, 3, 12, 12,33, 48, tzinfo=TimeZoneInfo(‘GMT StandardTime’, True) 。

解决办法

解决问题:
在CarsData.py导入win32timezone模块

import win32timezone

重新打包,再运行就没问题了!!!

留下一个疑问: 为什么打包之前代码没有导入win32timezone模块但运行没有问题,打包后就有问题了? 没有搞清楚…

你可能感兴趣的:(python)