【问题标题】:Python: Failed to execute scriptPython:无法执行脚本
【发布时间】:2021-06-22 15:17:35
【问题描述】:

我在 Python 3.9.5 中编写了一个简单的脚本,并通过运行将其转换为 .exe

pyinstaller --onefile -w myscript.py

当我从 python 文件启动它时,我的脚本运行良好,但它不起作用。当我单击位于 dist 文件夹中的 .exe 文件时。它说Failed to execute script myscript

我尝试创建一个仅使用 print("Hello World!") 的更简单的脚本,并使用完全相同的步骤将其转换为 .exe - 它工作得非常好...我不知道为什么我的第一个脚本不起作用。

这是我创建的代码:

import pyautogui
from pynput import keyboard
import time
import threading

text = pyautogui.prompt('Text: ')
interval = pyautogui.prompt('Interval: ')


def spam():
    while running:
        pyautogui.press('enter')
        pyautogui.write(text)
        pyautogui.press('enter')
        time.sleep(float(interval))


running = False


def on_press(key):
    global running
    if key == keyboard.Key.f1:
        running = running ^ True
        if running:
            t = threading.Thread(target=spam)
            t.start()


with keyboard.Listener(on_press=on_press) as listener:
    listener.join()

它基本上是一个简单的垃圾邮件机器人(用于教育目的)

【问题讨论】:

  • 尝试添加一些日志/打印语句并从 cmd 运行。并查看日志。当然之前要重建exe。
  • 呃你什么意思?
  • 在两者之间添加打印语句。打印一些东西,任何东西供您参考。尝试使用python运行python file.py,你会看到控制台输出正确。
  • 我认为您已经仔细检查了 pyinstaller 输出日志以确保所有依赖模块都已导入?

标签: python pyinstaller exe


【解决方案1】:

编辑:如果您没有第 3 方防病毒软件,请跳过第 1 步。其余步骤仍然适用于所有情况。


第 1 步)关闭您的第 3 方防病毒软件

第 2 步) 关闭在第 3 方防病毒停用后自动打开的 Windows Defender。在 powershell 中键入以下代码。确保管理员 powershell 而不是非特权的 powershell。

Set-MpPreference -DisableRealtimeMonitoring $true

第 3 步)运行您的 exe 文件

【讨论】:

  • 这并没有解释为什么需要这样做,也没有解释这样做的问题,但从逻辑上讲,由于操作系统安全设置,该过程可能会失败
  • 不,不起作用...顺便说一句,我制作了另一个脚本,它运行良好。唯一的区别是 1 有模块而 1 没有...
【解决方案2】:

你可以这样做:

pyinstaller -w --onefile script.py --hidden-import pynput.keyboard._win32 --hidden-import pynput.mouse._win32

here

原因是pynput使用importlib导入包,但是PyInstaller检测不到。

您还可以阅读 When Things Go Wrong 关于隐藏导入的部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-27
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多