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

时间:2014-04-01 21:09:37

标签: python python-3.x exe cx-freeze

我正在使用python 3.3.3

以下是我的setup.py代码

    import sys
from cx_Freeze import setup, Executable


build_exe_options = {"packages": ["os"], "excludes": ["tkinter"]}

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

setup(  name = "send_email",
        version = "0.1",
        description = "send the email",
        options = {"build_exe": build_exe_options},
        executables = [Executable("send_email.py", icon="icon.ico", base=base)])  

我的send_email.py文件中唯一的导入是smtplib。

以下错误消息是我在命令窗口中构建可执行文件时收到的内容:

c:\Python33>python.exe setup.py build
running build
running build_exe
copying c:\Python33\lib\site-packages\cx_Freeze\bases\Win32GUI.exe -> build\exe.
win-amd64-3.3\send_email.exe
copying C:\Windows\SYSTEM32\python33.dll -> build\exe.win-amd64-3.3\python33.dll

Traceback (most recent call last):
  File "setup.py", line 17, in <module>
    executables = [Executable("send_email.py", icon="icon.ico", base=base)])
  File "c:\Python33\lib\site-packages\cx_Freeze\dist.py", line 365, in setup
    distutils.core.setup(**attrs)
  File "c:\Python33\lib\distutils\core.py", line 148, in setup
    dist.run_commands()
  File "c:\Python33\lib\distutils\dist.py", line 917, in run_commands
    self.run_command(cmd)
  File "c:\Python33\lib\distutils\dist.py", line 936, in run_command
    cmd_obj.run()
  File "c:\Python33\lib\distutils\command\build.py", line 126, in run
    self.run_command(cmd_name)
  File "c:\Python33\lib\distutils\cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "c:\Python33\lib\distutils\dist.py", line 936, in run_command
    cmd_obj.run()
  File "c:\Python33\lib\site-packages\cx_Freeze\dist.py", line 235, in run
    freezer.Freeze()
  File "c:\Python33\lib\site-packages\cx_Freeze\freezer.py", line 577, in Freeze

    self._FreezeExecutable(executable)
  File "c:\Python33\lib\site-packages\cx_Freeze\freezer.py", line 169, in _Freez
eExecutable
    cx_Freeze.util.AddIcon(exe.targetName, exe.icon)
SystemError: error return without exception set

4 个答案:

答案 0 :(得分:3)

我有相同的消息错误,我通过提供图标文件的完整路径来修复它。 顺便说一句,确保图标是.ico格式(起初我将.png文件的扩展名重命名为.ico并导致进程崩溃,最后我将.png文件转换为.ico格式并且它工作正常)。

答案 1 :(得分:0)

使用此安装文件。

from cx_Freeze import setup, Executable

GUI2Exe_Target_1 = Executable(
    script = "Your scripts",
    initScript = None,
    base = 'Win32GUI',
    targetName = "app.exe",
    compress = True,
    copyDependentFiles = True,
    appendScriptToExe = False,
    appendScriptToLibrary = False,
    icon = "YOUR ICON FILE.ico"
    ) 
excludes = ["pywin", "tcl", "pywin.debugger", "pywin.debugger.dbgcon",
        "pywin.dialogs", "pywin.dialogs.list", "win32com.server",
        "email"] 
includes = ["PyQt4.QtCore","PyQt4.QtGui","win32gui","win32com","win32api","html.parser","sys","threading","datetime","time","urllib.request","re","queue","os"] 
packages = [] 
path = [] 
setup(
    version = "1.0",
    description = "myapp",
    author = "me",
    author_email = "email@email.com",
    name = "Your app name !",
    options = {"build_exe": {"includes": includes,
                             "excludes": excludes,
                             "packages": packages,
                             "path": path
                            }
               },
    executables = [GUI2Exe_Target_1]
    )

答案 2 :(得分:0)

我有同样的错误,我刚才修好了!有一个非常简单的解决方案,因为你的图标文件,你得到这个错误。

  1. 我认为你有一个类似于executables = [cx_Freeze.Executable("filename.py", base=base, icon="youricon")]
  2. 的setup.py文件

    您需要确保您的图标是.ico文件。只需搜索.gif或.png到.ico转换器,它就能为您完成!

    请确保您的.ico文件位于文件夹中。 确保在选项中包含文件

    您的setup.py中可能还有其他内容......

    options = {"build_exe":{"packages":["THEMODS YOU IMPORTED HERE"],"include_files":["THE FILES NEED TO BE HERE"]}
    

    这就是为我解决问题的原因。 LMK,如果这有帮助:)

答案 3 :(得分:0)

将您的选项更改为:

build_exe_options = {"packages": ["os"], "excludes": ["tkinter"],"include_files": ["icon.ico"],}
相关问题