Font module error when using pygame2exe

2020-04-12 02:04发布

问题:

I used Pygame2exe from the Pygame website and that got rid of the problem with the .dlls but there's still an error that remains.
The only font I'm using is the standard pygame font (freesansbold.ttf) and I've included a copy of it in my game directory.
Also,
I'm using the Font class and not the SysFonts class which I thought would fix my problem.
Any thoughts?

C:\Python26\apple_orchard\dist\appleorchard.exe:27: RuntimeWarning: use font: MemoryLoadLibrary failed loading pygame\font.pyd
(ImportError: MemoryLoadLibrary failed loading pygame\font.pyd)
Traceback (most recent call last):
  File "appleorchard.py", line 165, in <module>
  File "appleorchard.py", line 27, in __init__
  File "pygame\__init__.pyo", line 70, in __getattr__
NotImplementedError: font module not available
(ImportError: MemoryLoadLibrary failed loading pygame\font.pyd)

回答1:

Your problem looks like very similar to this one : http://thadeusb.com/weblog/2009/4/15/pygame_font_and_py2exe

Try to add "sdl_ttf.dll" to the list of system dlls like this :

origIsSystemDLL = py2exe.build_exe.isSystemDLL # save the orginal before we edit it
def isSystemDLL(pathname):
    # checks if the freetype and ogg dll files are being included
    if os.path.basename(pathname).lower() in ("libfreetype-6.dll", "libogg-0.dll", "sdl_ttf.dll"):
            return 0
    return origIsSystemDLL(pathname) # return the orginal function
py2exe.build_exe.isSystemDLL = isSystemDLL # override the default function with this one


回答2:

Looks like the pygame.font module is missing. Did you pack it?