當使用py2exe通過wxPython分發Python應用程序時,通常需要一些MSVC DLL來使新的機器上的.exe工作。特別是,兩個最常見的DLL是msvcp71.dll和msvcr71.dllpy2exe包含.exe中的MSVC DLL
前者可以使用this tip包含在.exe中。然而,後者只是通過py2exe放在dist
目錄中,而不是放在可執行文件中,即使我特別要求包含它。
任何想法如何導致py2exe包含在兩個.exe?
當使用py2exe通過wxPython分發Python應用程序時,通常需要一些MSVC DLL來使新的機器上的.exe工作。特別是,兩個最常見的DLL是msvcp71.dll和msvcr71.dllpy2exe包含.exe中的MSVC DLL
前者可以使用this tip包含在.exe中。然而,後者只是通過py2exe放在dist
目錄中,而不是放在可執行文件中,即使我特別要求包含它。
任何想法如何導致py2exe包含在兩個.exe?
難道不會啓動嗎?您需要msvcr71.dll
與exe相同的目錄,以便庫加載程序能夠找到並將其鏈接到應用程序的內存映射中。
它是基本操作所必需的,因此您不能僅讓py2exe
將其與其餘DLL一起解壓縮。
py2exe不能這樣做。您可以打包py2exe(有an example on the wiki顯示如何使用NSIS);如果使用NSIS或InnoSetup不是選項,您可以構建自己的包裝。
或者,如果您確信用戶將安裝msvcr71.dll的兼容副本(IIRC Vista或XP SP2用戶),那麼您可以在不包含它的情況下離開。也許更有用的是,如果您使用Python 2.3(或更早版本),那麼Python會鏈接到msvcr.dll而不是msvcr71.dll,並且任何Windows用戶都會安裝它,所以您可以不用擔心它。
是的,py2exe可以做到這一點。 View this link.如果您使用的是python2.7,請將「msvcr71」替換爲「msvcp90」。
我想你不明白DLL和py2exe如何工作。 py2exe將DLL綁定到可執行文件中,然後在運行Python部分之前在運行時提取並加載它們。要執行提取,msvcr71.dll需要已經存在。 – 2008-10-08 07:22:42
您的意思是由py2exe創建的.exe文件需要msvcr71.dll從本身提取和加載DLL? – 2008-10-08 11:08:59