执行 cx_Freeze setup.py 后,cmd 中没有任何反应

Posted

技术标签:

【中文标题】执行 cx_Freeze setup.py 后,cmd 中没有任何反应【英文标题】:Nothing happens in cmd after cx_Freeze setup.py execution 【发布时间】:2019-10-04 16:04:01 【问题描述】:

我想将我的一个 .py 文件(它使用模块“pygame”并且该模块使用“pkg_resources”,pyinstaller 不支持“pkg_resources”这就是我尝试 cx_Freeze 的原因)转换为带有 cx_Freeze 和如果我为 cx_Freeze 模块执行 setup.py 以开始转换,命令提示符只会显示一个空行并且没有任何反应。

C:\Users\PATH\ascension_card_game>python setup.py build

C:\Users\PATH\ascension_card_game>

我已经尝试使用 py2exe(导致相同的结果,这可能是我使用 cmd/python 命令的方式有问题)和 pyinstaller 并搜索是否有其他人有相同的问题或其他 .py 到 .exe 模块,但没有任何效果。我还在“环境变量”中设置了我的 python 文件夹的路径(见图),我尝试在 cmd 中使用“SET PATH=...”手动设置路径。

这就是 setup.py

from cx_Freeze import setup, Executable

setup(name = "Ascension: Card Game",
      version = "0.1",
      description = "A card game",
      executables = [Executable("ascension.py", base=base)])

我希望它会在包含其他内容的文件夹中生成一个 .exe 文件,但什么也没发生。这里还有一个使用 cx_Freeze 的手册:https://pythonprogramming.net/converting-python-scripts-exe-executables/

更新

如果我使用 anaconda 提示符执行带有“python setup.py build”的 setup.py 文件,它会显示此错误:

Traceback (most recent call last):
  File "setup.py", line 18, in <module>
    executables = executables)
  File "C:\Users\Maxim Stanko\Desktop\programming\Python\Games\ascension_card_game\cx_Freeze\dist.py", line 348, in setup
    distutils.core.setup(**attrs)
  File "C:\Users\Maxim Stanko\Miniconda\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "C:\Users\Maxim Stanko\Miniconda\lib\distutils\dist.py", line 966, in run_commands
    self.run_command(cmd)
  File "C:\Users\Maxim Stanko\Miniconda\lib\distutils\dist.py", line 985, in run_command
    cmd_obj.run()
  File "C:\Users\Maxim Stanko\Miniconda\lib\distutils\command\build.py", line 135, in run
    self.run_command(cmd_name)
  File "C:\Users\Maxim Stanko\Miniconda\lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "C:\Users\Maxim Stanko\Miniconda\lib\distutils\dist.py", line 985, in run_command
    cmd_obj.run()
  File "C:\Users\Maxim Stanko\Desktop\programming\Python\Games\ascension_card_game\cx_Freeze\dist.py", line 218, in run
    zipExcludePackages = self.zip_exclude_packages)
  File "C:\Users\Maxim Stanko\Desktop\programming\Python\Games\ascension_card_game\cx_Freeze\freezer.py", line 114, in __init__
    for n in self._GetDefaultBinPathExcludes() + binPathExcludes]
  File "C:\Users\Maxim Stanko\Desktop\programming\Python\Games\ascension_card_game\cx_Freeze\freezer.py", line 239, in _GetDefaultBinPathExcludes
    import cx_Freeze.util
ModuleNotFoundError: No module named 'cx_Freeze.util'

它没有模块 cx_Freeze.util。虽然我尝试重新安装 cx_Freeze 和 python 3.6 仍然没有工作。

感谢您的帮助

【问题讨论】:

这个 Python368 设置了吗?您是否使用任何 envs 或 conda?你从pyinstaller --version 得到任何输出吗?您用来设置路径的完整命令是什么?你是在添加之前的 PATH 吗? @AlexanderSantos 如果我输入“pyinstaller --version”,我会得到 3.5,这可能意味着 python 3.5?但我认为我需要使用 cx_Freeze 或 py2exe,因为 pyinstaller 网站说你不能使用使用“pkg_resources”或类似东西的模块。我没有使用 conda 或环境来执行此操作,但我安装了 conda。我不知道我的Python是否设置好?我在 cmd 中使用的完整命令是:“SET PATH=%PATH%;c:\Python368”。非常感谢您提供帮助 这个 3.5 表示 pyinstaller 的版本。如果它输出,则 pyinstaller 可能配置正确。你在使用的时候有没有报错?提醒一下,它应该指向脚本的起点,而不是 setup.py。另外,尝试删除 base=base,将其替换为 base=None 并检查它是否有效 我已经尝试过 base=None 但它也没有工作。使用 pyinstaller 创建了 .exe 文件,但是当我运行 .exe 时出现此错误(由 pkg_resources 引起): NotImplementedError: Can't perform this operation for unregistered loader type 【参考方案1】:

终于明白了: 这不是cmd或我的代码的问题,我只是安装了最新版本的python(3.7)并调整了环境变量,因此只有python 3.7的那些在那里。现在它工作得很好!感谢您的帮助:)

【讨论】:

以上是关于执行 cx_Freeze setup.py 后,cmd 中没有任何反应的主要内容,如果未能解决你的问题,请参考以下文章

使用 cx_freeze 将 .py 转换为可执行文件时出错

图像目录和cx_Freeze

在 Mac 上使用 cx_Freeze 从 .py 创建 .exe

使用 cx_Freeze 从 .py 构建一个 .exe 文件

cx_Freeze 没有名为“Tkinter”的模块

Python cx_freeze 构建错误