不知不覺,《C++面試八股文》已經更新30篇了,這是我第一次寫技術博客,由於個人能力有限,出現了不少紕漏,在此向各位讀者小伙伴們致歉。 為了不誤導更多的小伙伴,以後會不定期的出勘誤文章,請各位小伙伴留意。 在《[C++面試八股文:C++中,設計一個類要註意哪些東西?](https://zhuanla ...
Python打包 有很多可以用的 如 pyinstaller py2exe cx_Freeze nuitka py2app py0xidizer
cx_Freeze沒用過
nuitka是把py代碼轉為C++代碼 再重新編譯 優點是運行速度快 占用空間小 缺點是轉換重新編譯等耗時長
py2app是把Python腳本打包成Mac程式的
py0xidizer是把Python腳本打包成嵌入式程式的
這篇文章記錄一下pyinstall和py2exe的用法
註:以下都是windows下
pyinstaller
安裝:pip installer pyinstaller
使用:pyinstaller [參數][參數2][...] 要打包的文件(這裡需要把python安裝目錄下scripts目錄添加到環境變數)
示例:pyinstaller -F shili.py
參數可以參考 PyInstaller各參數含義_pyinstaller 參數_張棧不全的博客-CSDN博客 很全
總結常用的幾個
-D :生成出來是一個文件夾 裡面包含各種依賴的庫和資源 還有exe 預設是這個
-F:生成單一exe文件 所有資源都打包在exe里
-n:生成出來exe和.spec文件的名字 預設是你腳本的名字
-i:exe的圖標
-c:生成出來的exe文件打開有cmd視窗
-w:隱藏cmd視窗
--exclude-module:排除不需要的庫 可以減少文件的大小
打包出來後執行可能會有一閃而過的場景 可以在cmd里執行 會有錯誤信息 方便排錯
---------------------------------------------------------------------------------------------------------------------
py2exe
官網:py2exe.org
安裝:pip install py2exe
使用:需要先寫一個py文件 內容是生成時的各種配置
示例:(這裡需要把你的python目錄添加到環境變數)
setup.py:
from distutils.core import setup import py2exe setup( zipfile=None, console = [{"script":'clipboard.py'}] #要編譯的文件 console表示生成控制台程式 windows是windows程式
options = {
"py2exe" :
{
"compressed" : 1, # 壓縮
"optimize" : 2,
"bundle_files" : 1, # 所有文件打包成一個 exe 文件 可選選項0,1,2,3 詳細見下方
}
})
常用參數
setup:核心函數
setup下
windows: 用於打包帶界面的程式
console: 用於打包命令行程式
options: 用於指定各種打包選項,如生成zip文件、排除哪些模塊等。
zipfile: 用於把程式需要的dll等文件打包zip 預設打包 設置none則把這些文件打包進exe
options里:
excludes: 用於排除不需要的python模塊。
includes: 用於強制包含某些python模塊。
packages: 用於自動包含某些python包。
dist_dir: 指定輸出目錄。
dll_excludes: 用於排除某些不需要的dll文件。
bundle_files: 可選參數 0,1,2,3 0:表示打包成單一exe文件 1和2實測沒看出區別 有dll文件和exe 3:pyd dll 和exe文件
compressed: 是否壓縮
name: 作者
description: exe名字
windows里:
icon_resources: 設置圖標
script: 要打包的腳本
示例:windows = [{'script':'shili.py', 'icon_resources': [(1, 'xx.ico')]}]
寫好setup.py後 複製到要打包的目錄下
然後打開cmd 切換到setup.py的目錄 執行 python setup.py py2exe 打包後的文件在同目錄下的dist文件夾里
坑:
1、文件名必須是setup.py 其他都不行 2、如果你用的是64位python只能生成64位程式 只能在64位系統上運行 解決方法:在32位python下打包 3、從Python3.3開始 window構建python使用visual studio 2010 生成exe後需要複製msvcr100.dll到dist目錄下 和exe文件一起發佈
python版本不同需要的dll不同
以下來自py2exe官網
如果您使用的是 Python 2.4 或 2.5,那麼您需要的 DLL 稱為 MSVCR71.dll。此 DLL 可能已包含在您的 dist 目錄中,在這種情況下,您無需執行更多操作。
但是,此文件的版權歸Microsoft所有,您需要檢查您是否具有重新分發它的合法權利。如果您有 Visual Studio 的副本,請檢查安裝中提供的文件修訂.txt以查看您是否具有此 DLL 的重新分發許可權。通常,如果您擁有Microsoft Visual C++ 的許可證,則您有權重新分發它,但如果您使用速成版,則無權重新分發它。
如果您無權重新分發 MSVCR71.dll,則您的用戶必須使用 Microsoft Visual C++ 2005 可再發行組件包 (vcredist_x86.exe) 自行安裝它。
您可以指示用戶自己下載並運行它,也可以為您的應用程式創建一個安裝程式,其中包括 vcredist_x86.exe(它本身可由任何人再發行),然後將其作為應用程式安裝的一部分運行。
python2.6,2.7,3.0,3.1 需要MSVCR90.dll
其他版本官網沒寫 可能是MSVCR100.dll 可能MCVCR100.dll向下相容?這個沒試過
如果沒有打包相關dll 客戶機上也沒有需要的dll文件 會報 缺少msvcrXX.dll的錯誤 可以在虛擬機里打開軟體運行一下 看缺少什麼文件
有人說 py2exe打包的文件比pyinstaller小 但是我打包相同的文件 打包出來的文件都差不多大 py2exe配置文件里的各種括弧簡直要把人繞暈
個人感覺pyinstaller好用一些 成熟一些