用 PyInstaller 打包封裝python

2021-09-21 06:16:40 字數 2069 閱讀 4447

pip install pyinstaller
test.py **,以及 test.png ,test2.png 用於介面顯示到圖示檔案。

輸出乙個test 可以執行程式檔案,可直接執行。如: ./test.

實際上,這個檔案可執行程式檔案是乙個包,執行過程中會將這個包解壓縮到/tmp/_mei****** 路徑下,執行結束會自動清理掉。

pyi-makespec  --hidden-import pkgutil -f --add-data test.png:. --add-data test2.png:.  --key=******x(16個字元長度密碼 ) ./test.py

如果在建立配置檔案的命令中有些引數沒有寫,可以去直接去配置檔案裡面修改。基本上不建議修改,因為配置檔案裡的路徑是絕對路徑,維護這個檔案不太方便。

pyinstaller ./test.spec 

1、pyi-makespec   -f 引數:將可執行程式和依賴庫打包成乙個檔案。

預設pyinstaller會將test.py包成乙個 test可執行檔案,並將依賴到眾多so庫一併copy到「.dist/test/」這個路徑下。加上 -f 引數後將在.dist/test/下面只打包成乙個名為test包檔案。

2、 --add-data 引數:將程式需要的依賴檔案一同打包,執行時也會一同解壓到/tmp/_mei******/dest 路徑下。

這個引數可以多次使用,如:

--add-data test.png:.   --add-data test.png:. --add-data test2.png:.

該引數由一對鍵值組成,中間用冒號(windows系統環境下用分號)隔開。本例中:test.png是src 檔名,「.「 是dest路徑: 即/tmp/_mei******/./

該引數最終會體現在生成的 test.spec 配置檔案中的 datas引數裡。

預設: datas= ,   使用  --add-data後  datas=[('test.png', '.'), ('test2.png', '.') ],

如果需要增加其它檔案,也可直接修改datas的值。

假設在test.py 需要呼叫到test.png作為介面圖示,並且在python源**中 test.png和test.py是放在同乙個目錄下的, test.py通過 相對路徑方式(如:」./test.png" 或"test.png" )是可以正常訪問圖示檔案的。但是按照2中的配置打包後,執行時 test.png和test可執行程式 這兩個檔案都會copy到/tmp/_mei******/路徑下面,此時test可執行程式卻無法載入圖示。

要解決這個問題,可以在test.py中將訪問路徑改為絕對路徑。具體方法參考了此貼:

可以通過如下**獲得test.png的絕對路徑。

import sys

import os

def resource_path(relative_path):

""" get absolute path to resource, works for dev and for pyinstaller """

base_path = getattr(sys, '_meipass', os.path.dirname(os.path.abspath(__file__)))

return os.path.join(base_path, relative_path)

在test.py 中可以通過 resource_path("test.png") 這個方式來訪問圖示檔案。

4、加密防止反編譯。

主要通過 --key=******x(16個字元長度密碼 )    這個引數來實現。

需安裝加密包:sudo pip install pycrypto

詳細引數使用可以參考官方說明:

用Pyinstaller打包發布exe應用

pyinstaller 先去官網看支援的python版本 安裝方法1 1.cmd到 python scripts 找到pyinstaller.exe 2.輸入命令 1 pyinstaller.exe f path demo.py 後記 1.程式設定自定義圖示 pyinstaller f i ico ...

用pyinstaller打包exe常見問題

看網上說,先解除安裝原來的pyinstaller 再從github重新安裝pyinstaller 嗯,照做了,很好,換了個錯誤。如果第一步之後你還是閃退,那就在控制台中執行,然後看錯誤,我的錯誤就是no module 網上有解決方法如下 1.先用pyinstaller d f py生成一下 不一定能...

pyinstaller打包程式

python打包成exe檔案時,用的是pyinstaller 第一步安裝pyinstaller pip install pyinstaller第二步 pyinstaller f w i ico py其中 ico 是logo,py是你要打包的py檔案 我在打包時出現了struct.error unpa...