You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Tkinter挖矿Bot转exe后无法运行,求技术支持

问题排查与解决方案

1. 先获取错误详情(关键第一步)

控制台一闪而过是因为程序报错后直接退出,看不到错误内容。可以通过两种方式排查:

  • 打开命令提示符(CMD),导航到exe文件所在目录,直接输入exe文件名运行,控制台会保留并显示具体错误信息。
  • 在代码末尾添加异常捕获和日志输出,生成错误日志文件:
if __name__ == "__main__":
    try:
        INIT()
    except Exception as e:
        with open("error.log", "w", encoding="utf-8") as f:
            f.write(str(e))
        input("程序出错,按回车退出...")

运行exe后,会在同目录生成error.log,里面记录了具体报错原因。

2. 修复依赖打包不全问题

PyInstaller可能未自动识别keyboard和pyautogui的全部依赖,打包时需手动指定隐藏导入:

# 多文件模式打包
python -m PyInstaller test.py --hidden-import keyboard --hidden-import pyautogui

# 单文件模式打包
python -m PyInstaller test.py --onefile --hidden-import keyboard --hidden-import pyautogui

3. 解决权限不足问题

keyboard库需要管理员权限才能实现全局按键捕获,右键生成的exe文件,选择「以管理员身份运行」后测试。

4. 规避单文件打包的兼容性问题

--onefile模式下,程序运行时会将文件解压到临时目录,部分底层库可能出现兼容性异常。可以先尝试默认的多文件打包模式(不加--onefile),验证程序是否能正常运行。

5. 代码优化建议(提升打包后稳定性)

  • SET_KEYBIND函数可以简化循环逻辑:
def SET_KEYBIND(Stop_Key_Button):
    key = keyboard.read_key()
    if key:
        Stop_Key_Button.set(key)
        print(Stop_Key_Button.get())
  • START_ROBOT函数会阻塞Tkinter主循环,导致窗口无响应,建议改用线程运行:
import threading

def START_ROBOT(delay, Stop_Key_Button):
    def run_bot():
        sleep(delay)
        keyboard.press("ctrl")
        keyboard.press("w")
        pyautogui.mouseDown()
        while True:
            if keyboard.is_pressed(Stop_Key_Button.get()):
                keyboard.release("w")
                keyboard.release("ctrl")
                pyautogui.mouseUp()
                break
            sleep(0.1)
    threading.Thread(target=run_bot, daemon=True).start()

内容的提问来源于stack exchange,提问作者Programmer_Tom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:35:18