py2exe setup file for wxPython that runs from any IDE and excludes Tkinter

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • bartonc
    Recognized Expert Expert
    • Sep 2006
    • 6478

    #1

    py2exe setup file for wxPython that runs from any IDE and excludes Tkinter

    You can find the original author of the script by ggling " Py2Exe version 6.3 setup" The cool thing about this is that it calls py2exe, just in case you're uncomfortable with the command line. I had to search hi and lo for the example of how to exclude Tkinter. Coming soon: scipy includes and numpy include that gets rid of complaints of missing modules that are fantom errors.

    [CODE=python]# Py2Exe version 6.3 setup file for wxPython GUI programs.
    # Creates a single exe file.
    # It's easiest to add this wxPython2Exe.py file into the same
    # folder with the source file and an optional iconfile like "icon.ico"
    # (if you add your own icon file, remove the comment in front of icon_resources) .
    # Simply change the filename to whatever you called your source file.
    # Optionally edit the version info and add the name of your icon file.
    # Now run wxPython2Exe.py ...
    # Two subfolders will be created called build and dist.
    # The dist folder contains your .exe file, MSVCR71.dll and w9xpopen.exe
    # Your .exe file contains your code, all neded modules and the Python interpreter.
    # The MSVCR71.dll can be distributed, but is often already in the system32 folder.

    from distutils.core import setup
    import py2exe
    import sys

    sys.path.append (r"D:\My Documents\HETAP Project\2.05a")


    # enter the filename of your wxPython code file to compile ...
    filename = "App1.pyw"

    # ... this creates the filename of your .exe file in the dist folder
    if filename.endswi th(".py"):
    distribution = filename[:-3]
    elif filename.endswi th(".pyw"):
    distribution = filename[:-4]


    # if run without args, build executables in quiet mode
    if len(sys.argv) == 1:
    sys.argv.append ("py2exe")
    sys.argv.append ("-q")

    class Target:
    def __init__(self, **kw):
    self.__dict__.u pdate(kw)
    # for the versioninfo resources, edit to your needs
    self.version = "2.0.1"
    self.company_na me = "BCDesigns"
    self.copyright = "no copyright"
    self.name = "HETAP Pro 2.01a"

    ############### ############### ############### ############### ####
    # The manifest will be inserted as resource into your .exe. This
    # gives the controls the Windows XP appearance (if run on XP ;-)
    #
    # Another option would be to store it in a file named
    # test_wx.exe.man ifest, and copy it with the data_files option into
    # the dist-dir.
    #
    manifest_templa te = '''
    <?xml version="1.0" encoding="UTF-8" standalone="yes "?>
    <assembly xmlns="urn:sche mas-microsoft-com:asm.v1" manifestVersion ="1.0">
    <assemblyIdenti ty
    version="5.0.0. 0"
    processorArchit ecture="x86"
    name="%(prog)s"
    type="win32"
    />
    <description>%( prog)s Program</description>
    <dependency>
    <dependentAssem bly>
    <assemblyIdenti ty
    type="win32"
    name="Microsoft .Windows.Common-Controls"
    version="6.0.0. 0"
    processorArchit ecture="X86"
    publicKeyToken= "6595b64144ccf1 df"
    language="*"
    />
    </dependentAssemb ly>
    </dependency>
    </assembly>
    '''

    RT_MANIFEST = 24

    # description is the versioninfo resource
    # script is the wxPython code file
    # manifest_templa te is the above XML code
    # distribution will be the exe filename
    # icon_resource is optional, remove any comment and give it an iconfile you have
    # otherwise a default icon is used
    # dest_base will be the exe filename
    test_wx = Target(
    description = "A GUI app",
    script = filename,
    other_resources = [(RT_MANIFEST, 1, manifest_templa te % dict(prog=distr ibution))],
    #icon_resources = [(1, "icon.ico")],
    dest_base = distribution)

    ############### ############### ############### ############### ####
    packages = ["mx.ODBC.Window s"] #"scipy.signal" , "numpy.core ", "UniversalLibra ry",
    includes = ["PMDDialog" , "PMD"]
    excludes = ["pywin", "pywin.debugger ", "pywin.debugger .dbgcon",
    "pywin.dialogs" , "pywin.dialogs. list",
    "Tkconstants"," Tkinter","tcl",
    ]

    setup(
    options = {"py2exe": {"compressed ": 1,
    "optimize": 2,
    "ascii": 1,
    "bundle_fil es": 1,
    "packages": packages,
    ## "includes": includes,
    "excludes": excludes}},

    zipfile = None,
    windows = [test_wx],
    )
    [/CODE]
Working...