2010-01-20 3 views
5

Windows에서 py2exe 0.6.9 및 Python 2.6.4를 사용하여 Python 응용 프로그램을 번들로 제공하려고합니다. 실행 내가 그것을 구축하는 데 사용되는 시스템에서 잘 실행되는 동안 나는 다른 시스템에서 실행하려고하면 실패합니다 : py2exe 응용 프로그램을 실행할 때 MemoryLoadError

C:\Documents and Settings\Administrator\Desktop\dist>.\backend.exe install 
Traceback (most recent call last): 
    File "boot_service.py", line 6, in <module> 
    File "zipextimporter.pyo", line 82, in load_module 
    File "win32serviceutil.pyo", line 9, in <module> 
    File "zipextimporter.pyo", line 98, in load_module 
ImportError: MemoryLoadLibrary failed loading win32api.pyd 

은 내가 라이브러리를 누락 강한 직감을 가지고,하지만 난 ' 종속성 검사기가 대상 시스템에서 누락 된 항목을 표시하지 않으므로 특히 —이 확실하지 않습니다. 어떻게해야합니까?

답변

1

dll 및 종속성 검사를 수동으로 수행 할 수 있습니다. 당신이 exe를 생성 할 때 그것은 당신이 필요로하는 dll을 출력한다는 것을 알아 차렸을 것입니다. dll이 있고 동일한 버전 일 경우 exe가 작동하지 않는 시스템을 확인하십시오.

다른 하나. 당신은 전체 dist 폴더를 필요로하기 때문에 exe뿐만 아니라 전체 dist 폴더를 시스템이나 exe 파일에 복사하고 있습니까?

+0

DLL을 확인하고 적어도 * 이름이 * 있습니다.종속성 검사기가이를 확인합니다. exe가 아닌 dist 폴더 전체를 복사합니다. –

+0

그리고 그 dll의 버전? 그걸 확인 했니? – Paul

1

64 비트/Vista에서 py2exe 변환을 수행하고 있습니까?

나는 vista64bit에 코드를 작성해 왔으며, 만든 .exe 파일은 일반적으로 32 비트 XP에서는 작동하지 않는다.

.exe는 유용하게도 추적 파일이있는 텍스트 파일을 throw하고 64 비트 창에 win32api.dll이 사용 된 것으로 나타납니다. 필자는 이것이 32 비트 OS 동작을 복제하기 위해 64 비트 창에 사용되는 .dll이라고 가정하므로 동일한 스크립트를 가져 와서 32 비트 XP에서 변환을 수행합니다. 희망이 도움이됩니다.

0

미래에 여기 올 사람을위한 것입니다. 당신은 Win32에서 라이브러리의 어떤 종류를 사용하고 u는 오류 이러한 유형의 다음 단계를 수행 할 수 붙어있는 경우 :

  • 문제의 문제는 Win32 함수 사이의 충돌 dll 파일과 py2exe에 자동으로 dll 파일이 있다는 것입니다 .

    import win32crypt 
    win32crypt.CryptUnprotectData(...) 
    

    내가 사용 : 다음 코드에 따르면

    : 그럼 설정 옵션

예에서이 파일을 제외, 당신의 함수는 dll 파일이 필요 알고 당신이이 충돌을 해결하기 위해 CryptUnprotectData 함수에서 CryptUnprotectData에 필요한 dll을 검색 했으므로 다음 정보를 찾았습니다 enter link description here, 알 수 있듯이
"Crypt32.dll"이 필요합니다.

그래서 그

includes = ["win32crypt"] 
dll_excludes=["Crypt32.dll"] 


setup(
    options = {'py2exe': {'bundle_files': 1, 'compressed': True,'dll_excludes': dll_excludes,'includes': includes}}) 

모습으로 내 setup.py를 편집하고 완벽하게 일했다.

관련 문제