用py2exe對python2.6程式封裝後,在某些機器上無法運行
參考了py2exe官網:
http://www.py2exe.org/index.cgi/Tutorial#Step52
找出瞭解決辦法:
在發布的程式目錄下建立一個檔案名稱為:
Microsoft.VC90.CRT.manifest
內容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><br /><assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"><br /> <noInheritable></noInheritable><br /> <assemblyIdentity type="win32" name="Microsoft.VC90.CRT" version="9.0.21022.8" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity><br /> <file name="msvcr90.dll" /><br /></assembly>
再將dll檔案:msvcr90.dll複製到程式同目錄下,注意msvcr90.dll的版本號碼為
"9.0.21022.8"
添加了這兩個檔案後問題就解決了。
說明:
另外,也可以通過安裝vs2008可再發行包來解決運行環境的依賴問題:
http://download.microsoft.com/download/7/5/0/7502f4e9-1f90-4895-9259-1bde67b8b9a1/vcredist_x86.exe
安裝完以後可以在所在作業系統的 C:/windows/WinSxS/x86_Microsoft.VC90.CRT_**_9.0.21022.8_x-**(**為任意其它字元) 中找到需要的dll檔案,
另外可以在C:/windows/WinSxS/Manifests 中找到:x86_Microsoft.VC90.CRT_**_9.0.21022.8_**.manifest
對上面的manifest檔案進行修改去掉對msvcm90.dll和msvcp90.dll檔案的依賴即可,因為py2exe上面說我們不需要這兩個檔案。