简体   繁体   中英

Error converting .py to executable using cx_freeze

I am using python 3.3.3

the following is my setup.py code

    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)])  

The only import in my send_email.py file is smtplib.

The following error message is what I receive when building the executable in the command window:

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

I had the same message error and I fixed it by giving the full path of the icon file. By the way, make sure the icon is in .ico format (At first I renamed the extensions of a .png file to .ico and caused the process to crash, lastly I converted the .png file to the .ico format and it worked).

use this setup file .

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]
    )

I had the SAME EXACT ERROR that i just fixed right now! There is a very simple solution , you are getting this error becasue of your icon file.

  1. I take it you have a setup.py file with something along the lines of executables = [cx_Freeze.Executable("filename.py", base=base, icon="youricon")]

You need to make sure that your icon is an .ico file. Simply search for .gif or .png to .ico converter and it will do it for you!

Make sure also that your .ico file is inside your folder of your files. Make sure to include files in the options

You probably have something else in your setup.py along the lines of...

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

This is what fixed the problem for me. LMK if this helps :)

将选项更改为:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM