py2exe使用教程(二) 提供執行時庫

2021-06-26 18:27:37 字數 2259 閱讀 6729

python 的直譯器是通過microsoft visual c編譯的,所以你的新程式需要microsoft visual c 執行時庫才能執行。如果你已經安裝了相應版本的 python 或者 visual studio,那麼你的電腦上就已經安裝了這個庫檔案。如果你的使用者中有一些人還沒有這個庫檔案,那麼他們將無法執行你的程式。解決這個問題的方法取決於你使用的 python 版本:

如果你使用的是 python 2.4 或 2.5,你需要的 dll庫檔名為 msvcr71.dll。這個 dll 有可能已經在你的 dist 目錄下了,這種情況下你不需要做任何事情。

如果你沒有再發行 msvcr71.dll 的權利,那麼你的使用者就必須自己安裝它,可以通過 microsoft visual c++ 2005 redistributable package (vcredist_x86.exe)來安裝。

) 的安裝程式 (參考下面的步驟 6

),作為你的應用程式安裝的一部分來執行。

對於 python 2.6,你需要的 dll 檔名為 msvcr90.dll。py2exe 不能在 dist 目錄下自動包含這個檔案, 所以你必須自己提供。

令人頭疼的是,這個檔案有不止乙個的版本存在, 而且每個版本的名字都一樣。 你需要的版本是用來編譯 python 直譯器的相同版本,即 version 9.0.21022.8.  把你的滑鼠懸浮在這個 dll 檔案(或者 vcredist_x86.exe 可執行安裝程式)上,通過顯示的這些說明,確認你得到的版本。 你需要的 vcredist_x86.exe 包含在 microsoft visual c++ 2008 redistributable package 發布於 29-11-2007, 而不是 vs2008 sp1 ( 在python 2.7.1 上測試)。

5.2.1. 建立 c 執行時庫

redist.txt 檔案中的相關章節描述如下:

你必須確保 py2exe 複製所有的三個 dll 檔案和 manifest 檔案到你的工程目錄 dist 下,並且放在乙個名為 'microsoft.vc90.crt' 的子目錄下。 為了實現這個目的, 需要在setup.py 中新增乙個 data_files 選項:

from glob import glob

data_files = [("microsoft.vc90.crt", glob(r'c:\program files\microsoft visual studio 9.0\vc\redist\x86\microsoft.vc90.crt\*.*'))]

setup(

data_files=data_files,

etc)

在這種情況下, 執行 py2exe 需要把這些檔案放在你的 dist 目錄下:

dist

| +-microsoft.vc90.crt

| || +-microsoft.vc90.crt.manifest

| +-msvcm90.dll

| +-msvcp90.dll

| +-msvcr90.dll

| |-etc

現在, 只要簡單的複製整個 dist 目錄到你的使用者機器上,甚至在那些沒有自己複製過 c++ 執行時副本的機器上都可以執行你的程式。

注意: 這個包含 c 執行時的方法是通過使用了幾個 visual c++ 應用 —— 如果在 program files 目錄下搜尋 msvcr90.dll,可能會發現好幾個應用程式包含像這樣**在可執行檔案上的dll 檔案和相關聯的 manifest 檔案。

同樣需要注意的是儘管做了以上所有的工作, py2exe 仍然會抱怨:找不到 msvcp90.dll。 你必須編輯 setup.py 把這些庫檔案的路徑新增到系統路徑中, 例如

5.2.1.1 win32ui 特例

win32ui 需要 mfc dlls 才能執行 .exe 檔案, 參考 py2exeandwin32ui 獲得更多的資訊。

5.2.2. 執行可再發行的 c 執行時安裝程式

如果你沒有權利再發行 msvcr90.dll, 那麼你的使用者可以通過執行 microsoft visual c++ 2008 redistributable package (vcredist_x86.exe)在自己的機器上進行安裝。 重要的是,不要使用 sp1 版的安裝程式, 它包含了乙個錯誤版本的msvcr90.dll。

py2exe 不是乙個安裝程式構建器 —— 它僅僅是把你的python 程式執行所需要的檔案整理打包在一起。 外面有許多很好的安裝程式構建器,其中一些是開源的 (如: nsis) 一些是免費的 (如: inno setup)。

Py2Exe簡單應用

編寫乙個setup.py from distutils.core import setup import py3exe setup the first three parameters are not required,if at least a version is given,then a ve...

py2exe打包問題

最近在使用python打包的時候出現很多問題 1 python程式中使用到的問題 資料庫問題 解決方法 將程式打包後,將檔案拷貝到執行檔案下。2 報錯 由於應用程式配置不正確.我拷貝exe檔案到多台電腦上執行,只有一台執行不成功,google知道是缺少dll檔案。解決方法 按照的方法依然存在問題,提...

py2exe轉換引數

在公司用python寫了個統計資料並通過xlsxwriter模組生成excel的小工具,完成後使用py2exe轉換成exe檔案過程中遇到了些問題,記錄下.from distutils.core import setup import sys includes xlsxwriter options s...