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

如何解决cx_Freeze 5.1.1中导入setup的ImportError问题?

解决cx_Freeze打包时的ImportError: cannot import name 'setup'问题

哦,我一眼就看出问题所在了!你遇到的这个报错完全是文件名冲突搞的鬼😅

先看报错信息里的关键路径:C:\Users```\source\repos\PythonGame\cx_Freeze.py——你的打包脚本居然和cx_Freeze库的模块同名了!当Python执行from cx_Freeze import setup, Executable时,它会优先加载当前项目目录里的cx_Freeze.py(也就是你自己写的脚本),而不是你通过pip安装的官方cx_Freeze库。这样一来,既会触发循环导入,又因为你自己的脚本里根本没定义setup和Executable,自然就报错了。

具体修复步骤:

  • 第一步:重命名打包脚本
    把当前的cx_Freeze.py改成常规的打包脚本名,比如setup.py——这是cx_Freeze官方推荐的命名,完全不会和库名冲突。
  • 第二步:清理残留编译文件
    如果项目目录里有cx_Freeze.pyc文件(Python编译后的字节码文件),一定要删掉它,不然Python还是会优先加载这个旧文件。
  • 第三步:修正脚本代码
    把setup.py改回正确的导入和调用方式,而且注意:只需要打包游戏的主入口文件(Main.py),其他类文件会被cx_Freeze自动检测并打包,不需要单独写成Executable:
    from cx_Freeze import setup, Executable
    
    setup(
        name = "hello",
        options={"build_exe": {"packages":["pygame"], "included_files":["UFO.bmp","UFO_Monster.bmp","boss_Atack.jpg","boss.png","background_1.png","bullet.png","boom.png","shot.wav","explosion.wav","mybgm.wav","D2coding.ttf","Meteor.png"]}},
        version = "0.1",
        executables = [
            Executable('Main.py')
            # 删掉后面的Boss_class.py等Executable行,这些是被Main.py调用的模块,不需要单独打包成exe
        ]
    )
    
  • 第四步:重新执行打包命令
    打开命令行进入项目目录,运行:
    python setup.py build
    

这样操作后,cx_Freeze就能正确加载官方库中的setup和Executable,顺利完成打包了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:05:28