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

使用cx_Freeze打包Python Tkinter GUI程序时遇AttributeError: 'list' object has no attribute 'main_script'错误求助

解决cx_Freeze打包时的AttributeError: 'list' object has no attribute 'main_script'错误

这个错误完全出在你的setup.py文件里,和主代码iwms.py没有关系。

错误原因

你在定义executables变量的时候,多写了一个尾部逗号,导致这个变量从原本的列表变成了一个包含列表的元组:

executables = [
    cx_Freeze.Executable(
        "iwms.py",
        copyright="Copyright (C) 2021",
        base=base,
        icon="imws.ico",
    ),
],  # 这里的逗号是问题根源!

当cx_Freeze尝试处理executables时,它会遍历这个元组,把里面的整个列表当成单个Executable对象来处理——而列表显然没有main_script这个属性,于是就抛出了你看到的错误。

修正方案

只需要把executables定义末尾的那个多余逗号删掉,让它保持为一个普通的列表即可。另外还要注意你代码里未定义的build_exe_options变量,打包时会触发新的错误,需要补充定义或者移除相关配置:

import cx_Freeze
from cx_Freeze import *
import sys

base = None
if sys.platform == "win32":
    base = "Win32GUI"

# 修正:移除尾部逗号,保持为列表类型
executables = [
    cx_Freeze.Executable(
        "iwms.py",
        copyright="Copyright (C) 2021",
        base=base,
        icon="imws.ico",
    ),
]

# 补充定义build_exe_options(根据你的需求调整)
build_exe_options = {
    "packages": ["tkinter"],
    "include_files": ["imws.ico"]
}

cx_Freeze.setup(
    name = "App",
    version = "0.1",
    description = "My application!",
    options = {"build_exe": build_exe_options},
    executables = executables
)

如果不需要额外的打包配置,也可以直接把options参数改成options = {},跳过build_exe_options的定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:52:35