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

使用auto-py-to-exe打包CustomTkinter程序为exe时报distutils模块缺失错误

问题描述

使用auto-py-to-exe工具将Python项目打包为.exe可执行文件后,启动程序触发运行错误,完整报错追踪信息如下:

Traceback (most recent call last): 
File "Jumper.py", line 5, in <module>
File "C:\Users\Clowny\output\Jumper\customtkinter\__init__.py", line 10, in <module>
from .appearance_mode_tracker import AppearanceModeTracker
File "C:\Users\Clowny\output\Jumper\customtkinter\appearance_mode_tracker.py", line 3, in <module>
from distutils.version import StrictVersion as Version 
ModuleNotFoundError: No module named 'distutils'

按官方文档给出的操作步骤配置尝试后,问题仍未解决。

报错根因
  • Python 3.12及以上版本已将distutils从标准库中移除,当前使用的旧版本customtkinter库仍在调用distutils.version下的StrictVersion类
  • auto-py-to-exe是PyInstaller的GUI封装,对于隐式导入的第三方依赖,如果没有主动声明,打包时不会被收录到exe运行环境中,就会触发模块找不到的错误
排查解决方案

按优先级从高到低尝试:

  • 优先升级customtkinter到最新正式版:新版本customtkinter已经完全移除了对distutils的依赖,不会再触发这个报错。执行命令pip install --upgrade customtkinter完成升级后,删除之前打包生成的build、output缓存文件夹,重新走打包流程即可。
  • 若项目有版本兼容要求无法升级customtkinter:先安装setuptools包(distutils移除后官方将其对应能力合并到了setuptools中),执行命令pip install setuptools;之后打开auto-py-to-exe的高级选项配置栏,找到隐藏导入项,依次添加distutils、distutils.version两个导入声明,清除旧打包缓存后重新打包即可。
  • 若上述方案均无效:将本地Python版本降级到3.11及更早的稳定版本(这类版本标准库仍自带distutils),在对应版本的Python环境中重新安装项目所有依赖后,清除旧缓存再打包。

注意:每次重新打包前必须删除之前生成的build、dist、output目录,避免旧的缺模块缓存文件被复用,导致修复操作不生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 14:19:18