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

Vla*_*ZzZ 4 python pyinstaller

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

import win32serviceutil
import win32service
import win32event
Run Code Online (Sandbox Code Playgroud)

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

小智 9

-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

  • 解决了我的问题。非常感谢你,我的朋友。祝你好运。 (2认同)

kot*_*owy 7

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

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

列出隐藏的进口

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

当代码使用import或者exec或eval 时,可能会发生隐藏导入.当扩展模块使用Python/C API进行导入时,也会发生隐藏导入.发生这种情况时,Analysis无法检测到任何内容 没有警告,只在运行时出现ImportError.

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

一旦知道了需要哪些模块,就可以使用--hidden-import =命令选项或编辑spec文件或使用钩子文件将所需模块添加到bundle中(请参阅下面的了解PyInstaller Hook).