Skip to content

Encoding

Solution 1

In py2exe 0.5, if the encodings are not found in the built exe (indicated by LookupError: no codec search functions registered error message), add these two to the includes:

'encodings', 'encodings.*'

You can do this by adding a line

options = {"py2exe": {"packages": ["encodings"]}},

to your setup.py file.

That replaces the '--force-imports encodings' command line option from the 0.4py2exe

Solution 2

Adding 'encodings', 'encodings.*' to includes includes ALL encodings. I'm perfectly happy with only having latin-1 present (at least for some application, which will only be used in western europe)

so recommended adding

'encodings', 'encodings.latin_1'

20041201HAM

Sample

To avoid misunderstandings here is a sample setup.py

from distutils.core import setup
import py2exe

setup(console=["MyScript.py"],
      options = {"py2exe": {"packages": ["encodings"]}},
)

(which by the way is roughly the same as setup.py py2exe --packages encodings.)

changed behaviour

just "to be sure" I included "encodings" within options and again within the setup-command:

includes = ["encodings",
            "encodings.latin_1",]
[...]
options = {"py2exe": { # create a compressed zip archive
                      "compressed": 1,
                      "optimize": 2,
                      "excludes": excludes,
                      "includes": includes,
                          }}
[...]

setup(
    options = options,
    # The lib directory contains everything except the executables and the python dll.
    zipfile = zipfile,
    windows = [wxprog],
    console=[consprog],
    # use out build_installer class as extended py2exe build command
    cmdclass = {"py2exe": build_installer},
    packages = ["encodings"], #this line is rather wrong, at least not helpfull
    data_files=[("",["kategorien.xml","skm.cmd"]),
    ]
    )

py2exe 0.5.0 silently ignored the line

    packages = ["encodings"], #this line is rather wrong, at least not helpfull

py2exe 0.5.2 now uses this line for something and fails with:

running py2exe
running build_py
error: package directory 'encodings' does not exist

so: just trash that line and everything is sunny again. HAM20040713