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

Windows下Python打包exe报错:pynput提示平台不支持

问题分析

这个错误的核心是打包后的EXE无法找到pynput适配当前平台的后端模块:直接运行Python脚本时,本地Python环境能自动定位到正确的后端文件;但cx_Freeze打包时,由于pynput采用动态加载后端的机制,自动依赖检测漏掉了关键文件,再加上32位Python在64位Windows系统上的架构差异,最终触发了平台不支持的导入错误。

解决方案

1. 强制指定pynput的Windows后端

在你的主脚本AccessibleWindowSwitcher.py最开头添加代码,跳过动态检测,直接指定32位Windows后端:

import sys
# 强制绑定pynput的Win32后端
sys.modules['pynput._util.backend'] = __import__('pynput._util.win32', fromlist=[''])
# 之后再正常导入pynput模块
from pynput import keyboard

2. 修改cx_Freeze打包配置,手动包含后端文件

如果使用setup.py打包,需要在配置中明确指定要包含的pynput后端模块,避免cx_Freeze遗漏。示例setup.py代码:

import sys
from cx_Freeze import setup, Executable

script_path = "AccessibleWindowSwitcher.py"
base = "Win32GUI" if sys.platform == "win32" else None  # GUI程序用Win32GUI,控制台程序设为None

executables = [Executable(script_path, base=base)]

setup(
    name="AccessibleWindowSwitcher",
    version="1.0",
    executables=executables,
    options={
        "build_exe": {
            "includes": ["pynput.keyboard._win32", "pynput._util.win32"],
            "packages": ["pynput"],
        }
    }
)

3. 切换到64位Python(推荐)

你的系统是64位Windows 11,当前使用32位Python存在架构不匹配问题,容易引发打包兼容性故障。建议:

  • 卸载32位Python 3.10.5
  • 安装同版本的64位Python
  • 重新安装cx_Freeze和pynput依赖后再打包

4. 升级cx_Freeze到最新版本

cx_Freeze 6.10可能存在对动态加载模块的检测bug,升级到最新稳定版可修复这类问题:

pip install --upgrade cx_Freeze
验证步骤
  1. 按上述方案调整后,重新执行打包命令(如python setup.py build)
  2. 进入生成的build目录下的exe文件夹,运行AccessibleWindowSwitcher.exe
  3. 若仍报错,检查打包目录中是否存在pynput/keyboard/_win32.py、pynput/_util/win32.py等后端文件,确保它们被正确包含

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:16:37