Search code examples
pythondllwxpythonpy2exe

wxPython py2exe app not bundling properly?


I've got a wxPython application that I'm trying to make into an exe using py2exe, but I'm having some trouble. I've got MSVCP90.dll in the same directory as the script, and after py2exe finished, it says "The program can't start because MSVCR90.dll is missing..." when launching the exe. Why isn't it finding it?

While it's py2exe'ing, I also get the following:

The following modules appear to be missing
['Carbon', 'Carbon.Files']
...
Your executable(s) also depend on these dlls which are not included,
you may or may not need to distribute them.
...
  OLEAUT32.dll - C:\PATH
  USER32.dll - C:\PATH
...
  MSVCP90.dll - C:\PathToTheDllInMyScriptsFolder

Is there something I'm missing here? How hard can it be to take a .py wxPython app and turn it into a .exe wxPython app?


Solution

  • The way to handle this is to exclude MSVCP90.dll from the py2exe package. Here's a part of one of my setup scripts that does this:

    dll_excludes = ['libgdk-win32-2.0-0.dll', 'libgobject-2.0-0.dll', 'tcl84.dll',
                    'tk84.dll','MSVCP90.dll']
    
    setup(
        data_files = data_files,
        options = {"py2exe": {"compressed": 2,
                              "optimize": 2,
                              "includes": includes,
                              "excludes": excludes,
                              "packages": packages,
                              "dll_excludes": dll_excludes,
                              "bundle_files": 1,
                              "dist_dir": "dist",
                              "xref": False,
                              "skip_archive": False,
                              "ascii": False,
                              "custom_boot_script": '',
                             }
                  },
        zipfile = None,
        windows = [filename]
        )
    

    You will then be responsible for assuring that the MS Visual C++ runtime is installed on end user's machine. You can get it here:

    http://www.microsoft.com/en-us/download/details.aspx?id=29

    My experience is that is rare to find a Windows machine that lacks the visual c runtime, but you'll need to be ready to handle this just in case.

    good luck, Mike