Python專案打包發布方法

2021-09-05 12:39:19 字數 2407 閱讀 4078

目前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 這四個檔案丟到伺服器的某個...