ImportError:当我使用pyInstaller从python脚本创建一个单独的exe时,没有名为win32timezone的模块

时间:2015-10-19 11:14:55

标签: python pyinstaller

我有一个脚本,它在py文件时有效,但是当我使用pyInstaller从该脚本生成一个单独的exe文件时,我会收到错误:ImportError: No module named win32timezone
我用脚本导入:

import win32serviceutil
import win32service
import win32event

和其他一些模块如subprocess, os, time,但我认为3是问题 谁知道出了什么问题?谢谢!

2 个答案:

答案 0 :(得分:6)

我认为您需要遵循Pyinstaller手册的这一部分:

https://pythonhosted.org/PyInstaller/#id67

  

列出隐藏的进口

     

如果Analysis认为已找到所有导入,但应用程序失败   导入错误,问题是隐藏导入;也就是说   导入在分析阶段不可见。

     

当代码使用导入或可能时,可能会发生隐藏导入   执行或评估。扩展模块时也可能发生隐藏导入   使用Python / C API进行导入。发生这种情况时,分析可以   没有检测到。没有警告,只有一个ImportError   运行时间。

     

要查找这些隐藏的导入,请使用-v标志构建应用程序(获取   Python的Verbose Imports上面并运行它。

     

一旦知道需要哪些模块,就可以添加所需的模块   使用 - hidden-import =命令选项或通过编辑捆绑包   spec文件,或者使用钩子文件(请参阅了解PyInstaller   下面的钩子。)

答案 1 :(得分:1)

-v标志不再起作用(现在显示版本)。

首先,找出缺少的模块。您可以通过PowerShell / cmd执行exe来执行此操作。例如,如果您的文件是“ project.exe”,则在其目录中打开一个PowerShell窗口,然后使用命令:.\project.exe

使用它来构建exe: pyinstaller --hiddenimport win32timezone -F a.py

  • win32timezone是缺少的模块。
  • 使用-F或--onefile创建独立的可重新分发的exe。
  • 如果缺少多个模块,则可以多次使用--hiddenimport。

参考:https://pythonhosted.org/PyInstaller/usage.html