我有一个想要转换成 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
答案 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
和任何其他给您错误的子包。