“无法执行脚本”pyinstaller

时间:2021-05-11 15:35:33

标签: python pyinstaller

我有一个想要转换成 exe 的 python 代码。
我将 pyinstaller 用于:pyinstaller --onefile -w script.py
制作完 exe 文件后,我双击了该文件,但出现“无法执行脚本”。

我也尝试从 cmd 运行它,但它给出了同样的致命错误。

要添加的东西:
该代码导入了几个文件包,包括我制作的一个 python 代码,以及它使文件引用到它的位置。

我做错了什么吗?

脚本有这些导入:

import socket
import os
from PIL import ImageGrab
import cv2
import time
import json
import myFile

我在 cmd 下运行代码,它给出了这个错误:

  File "script.py", line 3, in <module>
    from PIL import ImageGrab
ModuleNotFoundError: No module named 'PIL'

可能不相关,但现在我尝试做 pyinstaller --onefile -w client.py
在我运行它之后,Windows Defender 在里面发现了这个:
this mockaroo link


在 pycharm 的终端中运行它之后:

pyinstaller --onefile --hidden-import=PIL --hidden-import=Pillow --hidden-import=pynput client.py

我收到此错误(请注意,我将其从 dist 目录移至主目录):

Traceback (most recent call last):
  File "client.py", line 7, in <module>
    import myFile
  File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
  File "myFile.py", line 1, in <module>
    from pynput import mouse, keyboard
  File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
  File "pynput\__init__.py", line 40, in <module>
  File "PyInstaller\loader\pyimod03_importers.py", line 540, in exec_module
  File "pynput\keyboard\__init__.py", line 31, in <module>
  File "pynput\_util\__init__.py", line 82, in backend
ImportError
[13364] Failed to execute script client

1 个答案:

答案 0 :(得分:1)

这可能是由于 pyinstaller 无法正确找到您的依赖项并跳过一些包。

要修复 ModuleNotFoundError: No module named 'PIL' 之类的任何错误,只需将其添加为隐藏导入:

pyinstaller --onefile --hidden-import=PIL -w script.py

对于第二个错误,这是 pyinstaller 和 pynput 的一个已知问题。 找here一些解释。

它的 TLDR 似乎是您需要添加 --hidden-import=pynput.mouse._win32 --hidden-import=pynput.keyboard._win32 --hidden-import=pynput._util._win32 和任何其他给您错误的子包。