2014-12-05 8 views
0

py2exe 실행 파일을 만들었습니다. "프로그래밍 퀴즈"입니다. 그것은 파이 게임에서 만들어지며 EXE로 실행할 때 끝까지 작동합니다. 끝에는 파이 게임 텍스트가 있기 때문에 나는 추측한다. 오류는 아래와 같습니다. 여기에 EXE로하지만 보통의 평으로 작동하지 않는 코드의 일부는 다음과 같습니다Py2Exe 파일이 끝날 때까지

def endgame(): 
    global programmer 
    if programmer < 0: 
     programmer = 0 
    font = pygame.font.SysFont(None, 25) 
    text = font.render("You are: " + str(programmer) + "% a programmer.", True, black) 
    gameDisplay.blit(text, (170,200)) 

오류 :

C:\Python27\Programming Survey\dist>survey.exe 
survey.exe:43: RuntimeWarning: use font: DLL load failed: The specified module c 
ould not be found. 
(ImportError: DLL load failed: The specified module could not be found.) 
Traceback (most recent call last): 
    File "survey.py", line 223, in <module> 
    File "survey.py", line 217, in main 
    File "survey.py", line 43, in endgame 
    File "pygame\__init__.pyc", line 70, in __getattr__ 
NotImplementedError: font module not available 
(ImportError: DLL load failed: The specified module could not be found.) 
+1

이와 같은 디버깅 방법 중 하나는 콘솔에서 .exe를 실행하는 것입니다. 그리고 그것이 작동하지 않고 단지 새로운 콘솔을 생성한다면, 주 코드 주위에'try :/finally :'를 사용하여 마지막에'input()'을 사용하면 어떤 것을 볼 수있는 기회를 갖게됩니다. 창문이 닫히기 전에 인쇄 중입니다. – abarnert

+0

감사합니다. 오류가 게시되었습니다. – HKVariant

+0

어디에서 PyGame을 얻었으며 어떻게 설치 했습니까? – abarnert

답변

0

대신 pygame2exe를 사용하여 고정하지만 py2exe도 사용하지만 dll과 같은 글꼴이 사전로드되어 있으므로 제대로 작동합니다.

0

OK, 당신의 문제는 pygame.font을 사용하려는 것입니다 , 그러나 당신의 PyGame 설치에는 그 모듈이 포함되어 있지 않습니다. the docs으로

말 :

This module is optional and requires SDL_ttf as a dependency. You should test that pygame.font is available and initialized before attempting to use the module.

이는 부하에 실패 할 수 두 가지 이유 때문에 실제로 :

  1. 당신은 사용할 수 없습니다 명시 적으로 파이 게임을 구축 (또는 그 이전에 SDL_ttf를 설치하지 않은가, 또는 설치 미리 컴파일 된 바이너리이므로) 지원이 PyGame에 내장되어 있지 않습니다.
  2. SDL_ttf을 DLL로 빌드했지만 런타임에는 해당 DLL을 사용할 수 없습니다.

어느 쪽이든, 그건 당신이 pygame.font를 사용할 수 없음을 의미합니다. * 문제가 1 인 경우, 당신은 파이 게임을 다시 (또는 다른 바이너리 설치를 얻을)해야합니다. # 2이면 다른 SDL DLL을 설치 한 것과 같은 방법으로 SDL_ttf.dll을 설치해야합니다.

잘 모르겠 으면 2 번을 먼저 시도하고 여전히 작동하지 않으면 새로운 PyGame 빌드가 필요합니다. 당신은 당신이하고 (또는 바이너리가 대신 pygame.font의에 대한 지원을 포함 수도 건설 어쩌면 누구든지) 생각을하는지 알고 있다면

, 당신은 ((약간 다른 인터페이스를 가지고) pygame.freetype 또는 pygame.ftfont를 사용하는 것이 좋습니다 거의 완전한 드롭 인 대체 pygame.font 빌드에 pygame.freetype) 대신. 일 수도 있고 os.putenv('PYGAME_FREETYPE', '1') 또는 이와 비슷한 것으로도 바뀌므로 pygame.font의 최신 버전은 pygame.ftfont으로 대체됩니다. 그러나이 모든 것은 Windows 사용자보다 Linux 사용자와 관련성이 높습니다. 또한 1.9.2까지 표준 빌드에 포함되지 않았으며 2014 년 12 월 5 일 현재 1.9.2의 공식 릴리스가 아직 제공되지 않습니다.

+0

그럼 정상적인 .py 파일로 작동합니다. SDL_ttf.dll 파일을 주사위없이 dist 폴더에 넣으려고했습니다. – HKVariant

+0

그냥 dll을 .exe 파일 형식으로로드하지 못했습니다. 혼란 스럽습니다. – HKVariant

+0

@HunterKepley : 그러면 문제는 DLL이'py2exe'에 의해 올바른 위치에 번들되지 않는다는 것입니다.이것은 당황 스러울 수 있지만 제대로하지 못하면이 문제가 발생할 것입니다. – abarnert

관련 문제