目前python打包工具有多個,目前比較好用的為pyinstaller,該工具可以支援在window和linux下使用。
在windows下,大小為幾十k的原始檔打包成exe檔案,可能為幾十兆,原因是把程式所引用的庫檔案也一起打包在一起。
如下以windows系統為例,分2個步驟,演示如何使用pyinstaller打包。
第1步:安裝pyinstaller
安裝pyinstaller之前首先必須有pip,如果還沒有安裝,請用度娘搜尋「python安裝pip」,資源豐富,在此不再介紹,使用pip安裝pyinstaller的命令如下:
pip install pyinstaller
命令執行的截圖如下,直至安裝完畢,我僅擷取了前面部分列印資訊。
第2步:打包exe檔案
如果是打包乙個py檔案,可以使用「pyinstaller -f 待打包檔名」進行打包,在命令執行完畢後,會在dist目錄下生成乙個「待打包檔名.exe」的檔案。如果不使用「-f」引數,則會在dist目錄下生成乙個「待打包檔名」的資料夾,該資料夾下包含「待打包檔案.exe」,但是要整個資料夾在一起才能正常工作,因為這個資料夾的功能相當於使用「-f」時的乙個「待打包檔案.exe」。
使用加f引數打包成乙個exe檔案的操作截圖如下:
使用「f」強制打包引數,有時會導致軟體功能執行不正常,僅限於小的範例使用,如果專案有多個py檔案,則建議別再使用「f」引數。
如果專案有多個檔案,打包時可以把多個檔案列出來,中間用空格隔開即可。
如果需要修改預設圖示為指定圖示,則使用「-i 圖示檔名」來實現。
如下為使用多個py檔案和圖示的打包截圖。
引數引數全稱
引數說明
-f–onefile
打包成單個可執行檔案,如果你的**都寫在乙個.py檔案,則可以使用,如果是多個.py檔案,建議不要使用。
-d–onedir
打包多個檔案,在dist中生成很多依賴檔案,適合以框架形式編寫工具**,該方式**較易於維護。
-k–tk
在部署時包含 tcl/tk。
-a–ascii
不包含編碼.在支援unicode的python版本上預設包含所有的編碼。
-d–debug
產生debug版本的可執行檔案
-w–windowed,–noconsole
使用windows子系統執行.當程式啟動的時候不會開啟命令列(僅對windows有效)
-c–nowindowed,–console
使用控制台子系統執行(預設)(只對windows有效)
pyinstaller -c ***x.py
pyinstaller ***x.py --console
-s–strip
可執行檔案和共享庫將run through strip。
注意cygwin的strip可能使普通的win32 dll無法使用
-x–upx
如果有upx安裝(執行configure.py時檢測),則會壓縮執行檔案(windows系統中的dll也會)
-o dir
–out=dir
指定spec檔案的生成目錄,如果沒有指定,而且當前目錄是pyinstaller的根目錄,會自動建立乙個用於輸出(spec和生成的可執行檔案)的目錄.如果沒有指定,而當前目錄不是pyinstaller的根目錄,則會輸出到當前的目錄下。
-p dir
–path=dir
設定匯入路徑(和使用pythonpath效果相似)。
可以用路徑分割符(windows使用分號,linux使用冒號)分割,指定多個目錄.也可以使用多個-p引數來設定多個匯入路徑,讓pyinstaller自己去找程式需要的資源
-i –icon=
將file.ico新增為可執行檔案的資源(只對windows系統有效),改變程式的圖示 pyinstaller -i ico路徑 ***xx.py
–i –icon=
將file.exe的第n個圖示新增為可執行檔案的資源(只對windows系統有效)
-v file
–version=file
將verfile作為可執行檔案的版本資源(只對windows系統有效)
-n name
–name=name
可選的專案(產生的spec的)名字.如果省略,第乙個指令碼的主檔名將作為spec的名字
python專案打包發布總結
這裡主要收集python專案的打包 發布和部署的常用方法,只是入門級別,深入的流程還是以官方文件為準 鏈結每節都已經給出 distutils python自帶的基本安裝工具,適用於非常簡單的應用場景使用,不支援依賴包的安裝 通過distutils來打包,生成安裝包,安裝python包等工作,需要編寫...
打包發布VUE專案
適用於前後端分離專案,主要是打包前端 核心命令 cnpm install cnpm run build就1個是安裝依賴包,1個是構建專案,最後生成 dist index.html static把這個推到環境就可以了 從我目前的線上經驗上呢 也遇到一些問題的 1.涉及到開發那邊新增了模組,我們這邊打包...
NUXT vue專案打包發布
nuxt是vue專案伺服器端渲染的通用型框架,主要作用是seo優化 具體的搭建專案我這裡就不做說明了,大家闊以參考官方文件說明。1 首先執行npm run build 2 將打包好的12 34.nuxt static nuxt.config.js package.json 這四個檔案丟到伺服器的某個...