# ======================================================# # File automagically generated by GUI2Exe version 0.3 # Andrea Gavana, 01 April 2007 # ======================================================# # Let's start with some default (for me) imports... from distutils.core import setup import py2exe import glob import os import zlib import shutil # Remove the build folder shutil.rmtree("build", ignore_errors=True) # do the same for dist folder shutil.rmtree("dist", ignore_errors=True) MANIFEST_TEMPLATE = """ %(prog)s """ class Target(object): """ A simple class that holds information on our executable file. """ def __init__(self, **kw): """ Default class constructor. Update as you need. """ self.__dict__.update(kw) # Ok, let's explain why I am doing that. # Often, data_files, excludes and dll_excludes (but also resources) # can be very long list of things, and this will clutter too much # the setup call at the end of this file. So, I put all the big lists # here and I wrap them using the textwrap module. data_files = [] includes = [] excludes = ['_gtkagg', '_tkagg', 'bsddb', 'curses', 'email', 'pywin.debugger', 'pywin.debugger.dbgcon', 'pywin.dialogs', 'tcl', 'Tkconstants', 'Tkinter'] packages = [] dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll', 'tk84.dll', 'MSVCP90.dll', 'mswsock.dll', 'powrprof.dll'] icon_resources = [] bitmap_resources = [] other_resources = [] other_resources = [(24, 1, MANIFEST_TEMPLATE % dict(prog="MyAppName"))] # This is a place where the user custom code may go. You can do almost # whatever you want, even modify the data_files, includes and friends # here as long as they have the same variable name that the setup call # below is expecting. # # The following will copy the MSVC run time dll's # (msvcm90.dll, msvcp90.dll and msvcr90.dll) and # the Microsoft.VC90.CRT.manifest which I keep in the # "Py26MSdlls" folder to the dist folder # # depending on wx widgets you use, you might need to add # gdiplus.dll to the above collection py26MSdll = glob.glob(r"c:\Dev\Py26MSdlls-9.0.21022.8\msvc\*.*") # install the MSVC 9 runtime dll's into the application folder data_files += [("", py26MSdll),] # I found on some systems one has to put them into sub-folders. ##data_files += [("Microsoft.VC90.CRT", py26MSdll), ## ("lib\Microsoft.VC90.CRT", py26MSdll)] # Ok, now we are going to build our target class. # I chose this building strategy as it works perfectly for me :-D GUI2Exe_Target_1 = Target( # what to build script = "test.py", icon_resources = icon_resources, bitmap_resources = bitmap_resources, other_resources = other_resources, dest_base = "test", version = "0.1", company_name = "No Company", copyright = "No Copyrights", name = "Py2Exe Sample File" ) # That's serious now: we have all (or almost all) the options py2exe # supports. I put them all even if some of them are usually defaulted # and not used. Some of them I didn't even know about. setup( data_files = data_files, options = {"py2exe": {"compressed": 2, "optimize": 2, "includes": includes, "excludes": excludes, "packages": packages, "dll_excludes": dll_excludes, "bundle_files": 2, "dist_dir": "dist", "xref": False, "skip_archive": False, "ascii": False, "custom_boot_script": '', } }, zipfile = "lib\library.zip", console = [], windows = [GUI2Exe_Target_1] ) # This is a place where any post-compile code may go. # You can add as much code as you want, which can be used, for example, # to clean up your folders or to do some particular post-compilation # actions. # And we are done. That's a setup script :-D