Search code examples
pythonpython-3.xpygamecx-freeze

cx_Freeze: "No module named 'codecs'"


I've been desperately trying to compile my python pygame program into standalone executables to no prevail. PyInstaller doesn't work properly with pygame, Nuitka doesn't make standalones that work and cx_Freeze is looking the best choice. However, when I compile using my setup.py, it makes a set of files but the main executable doesn't run.

My setup.py is as below:

import sys
import cx_Freeze

executables = [cx_Freeze.Executable("main.py")]
images =["assets/images/1.png","assets/images/2.png","assets/images/3.png","assets/images/4.png","assets/images/5.png","assets/images/6.png","assets/images/7.png","assets/images/8.png","assets/images/tile.png","assets/images/mark.png","assets/images/mine.png","assets/images/overlay.png","assets/images/overlay_2.png","assets/images/background.png"]

cx_Freeze.setup(
    name="Minesweeper",
    options={"build_exe": {"packages":["pygame"],
                           "include_files":images}},
    executables = executables

)

There are other python files that are referenced to by main.py; does this matter?

Many thanks

Edit: As requested, platform is Linux (Ubuntu 14.04); python version is 3.4.3; cx_Freeze is cxfreeze 5.0, downloaded through pip. The exact error reads:

Fatal Python error: Py_Initialize: Unable to get locale encoding
Traceback (most recent call last):
File "usr/lib/python3.4/encodings/__init__.py", line 31, in <module>
ImportError: No module named 'codecs'
Aborted (core dumped)

Solution

  • I had exactly the same issue with cx_Freeze 5.0.1, python 3.4.4 on Ubuntu 15.10. As suggested by @Anthony Tuininga, reinstalling python from the source fixed the problem, for instance from this source :

    wget https://www.python.org/ftp/python/3.4.4/Python-3.4.4.tgz
    tar xzf Python-3.4.4.tgz
    
    # I had to specify the location of zlib in my case
    cd Python-3.4.4
    ./configure --with-zlib-dir=/usr/lib/x86_64-linux-gnu
    sudo make altinstall
    

    Then, I installed cx_Freeze from source :

    wget https://github.com/anthony-tuininga/cx_Freeze/archive/5.0.1.tar.gz
    tar xzf 5.0.1.tar.gz
    cd ./cx_Freeze-5.0.1/
    python3.4 setup.py build
    sudo python3.4 setup.py install
    

    I also installed pygame from source (as you are using it too) :

    wget https://github.com/pygame/pygame/archive/1.9.3.tar.gz
    tar xzf 1.9.3.tar.gz
    cd ./pygame-1.9.3/
    python3.4 setup.py build
    sudo python3.4 setup.py install