Cx_Freeze executable doesn't work with pygame

2019-06-02 19:49发布

问题:

I am having trouble with creating an executable for my python program with cx_freeze.I am on windows (XP) and my program uses Tkinter, Pygame (and random) and is coded in python 3.2. I have tried creating a distils and running from command prompt:

cxfreeze --target-dir dist

On both I get this error:

    Traceback (most recent call last):
  File "C:\Python32\lib\site-packages\pygame\__init__.py", line 117, in <module>

    try: import pygame.display
  File "ExtensionLoader_pygame_display.py", line 12, in <module>
  File "ExtensionLoader_pygame_surface.py", line 12, in <module>
ImportError: No module named _view

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Python32\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 2
7, in <module>
    exec(code, m.__dict__)
  File "BallGame.pyw", line 1, in <module>
  File "C:\Python32\lib\site-packages\pygame\__init__.py", line 118, in <module>

    except (ImportError,IOError):display=MissingModule("display", geterror(), 1)

  File "C:\Python32\lib\site-packages\pygame\__init__.py", line 61, in __init__
    self.warn()
  File "C:\Python32\lib\site-packages\pygame\__init__.py", line 85, in warn
    warnings.warn(message, RuntimeWarning, level)
  File "C:\Python32\lib\warnings.py", line 18, in showwarning
    file.write(formatwarning(message, category, filename, lineno, line))
  File "C:\Python32\lib\warnings.py", line 25, in formatwarning
    line = linecache.getline(filename, lineno) if line is None else line
  File "C:\Python32\lib\linecache.py", line 15, in getline
    lines = getlines(filename, module_globals)
  File "C:\Python32\lib\linecache.py", line 41, in getlines
    return updatecache(filename, module_globals)
  File "C:\Python32\lib\linecache.py", line 127, in updatecache
    lines = fp.readlines()
  File "C:\Python32\lib\codecs.py", line 300, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x90 in position 2: invalid s
tart byte

Please could you tell me how to fix it, or recommend a different piece of software to turn my python script into executables. Any help is greatly appreciated. Thanks in advance!

回答1:

You need to run import pygame._view at the start of your script.