2008-10-08 3 views
4

py2exe를 사용하여 wxPython으로 Python 응용 프로그램을 배포하는 경우 새로 설치 한 컴퓨터에서 .exe를 작동 시키려면 일부 MSVC DLL이 필요합니다. 특히 가장 일반적인 두 DLL은 msvcp71.dll과 msvcr71.dll입니다..exe에 MSVC DLL을 포함하는 py2exe

전자는 this tip을 사용하여 .exe에 포함될 수 있습니다. 그러나, 후자는 py300.exe에 의해 dist dir에 배치되고 실행 파일에는 포함되지 않습니다. 특별히 포함 시키도록 요청한 경우에도 마찬가지입니다.

py2exe에서 .exe 내부와 외부를 모두 포함시키는 방법을 알려주세요.

답변

7

그럼 시작하지 않겠습니까? 당신은 msvcr71.dll을 exe와 같은 디렉토리에두고 싶으므로 라이브러리 로더가 그것을 찾아서 응용 프로그램의 메모리 맵에 연결할 수 있습니다.

기본 작업에 필요하기 때문에 py2exe은 나머지 DLL과 함께 압축을 풀 수 없습니다.

+4

나는 DLL과 py2exe의 작동 방식을 이해하지 못한다고 생각합니다. py2exe는 DLL을 실행 파일에 묶어 놓은 다음 Python 부분을 실행하기 전에 런타임에 추출하고로드합니다. 추출을 수행하려면 msvcr71.dll이 이미 있어야합니다. –

+1

py2exe로 만든 .exe 파일에 msvcr71.dll을 사용하여 DLL 자체를 추출하고로드해야합니까? –

1

py2exe는이 작업을 수행 할 수 없습니다. 당신은 py2exe를 포장 할 수 있습니다 (NSIS로 그 일을하는 방법을 보여주는 an example on the wiki이 있습니다); NSIS를 사용하거나 InnoSetup을 사용할 수 없다면 독자적인 래퍼를 만들 수 있습니다.

또는 msvcr71.dll (IIRC Vista 또는 XP SP2 사용자)의 호환되는 사본이 사용자에게 있음을 확신한다면 사용자는이를 포함하지 않고 도망 갈 수 있습니다. 아마도 Python 2.3 (또는 이전 버전)을 사용하면 Python은 msvcr71.dll이 아닌 msvcr.dll에 연결되므로 모든 Windows 사용자가이 파일을 설치하므로 걱정할 필요가 없습니다.

+0

문제는 wxPython과 msvcr71.dll을 연결하는 것입니다. –

+0

wxPython 릴리스에서 충분히 뒤쪽으로 이동하면 Python에서와 마찬가지로 msvcr71.dll 대신 msvcr.dll에 링크되는 링크를 찾을 수 있습니다. 이 모든 일이 가치가있을 것 같지는 않지만, 물론 당신의 상황을 알지 못합니다. –

1

예, py2exe가이 작업을 수행 할 수 있습니다. View this link. 그리고 python2.7을 사용하는 경우 "msvcr71"을 "msvcp90"으로 바꿉니다.