Python項目打包發佈方法

 

      目前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文件和圖標的打包截圖。

      pyinstaller的參數見下表,大家可以在需要時參考。

參數 參數全稱 參數說明

-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  xxxx.py

pyinstaller xxxx.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 <FILE.ICO> –icon=<FILE.ICO> 將file.ico添加爲可執行文件的資源(只對Windows系統有效),改變程序的圖標  pyinstaller -i  ico路徑 xxxxx.py
–i <FILE.EXE, N> –icon=<FILE.EXE, N>

將file.exe的第n個圖標添加爲可執行文件的資源(只對Windows系統有效)

-v FILE –version=FILE 將verfile作爲可執行文件的版本資源(只對Windows系統有效)
-n NAME –name=NAME

可選的項目(產生的spec的)名字.如果省略,第一個腳本的主文件名將作爲spec的名字

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

如果你喜歡這篇文章,別忘了點贊和評論哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章