python利用pyinstaller打包簡明教程
阿新 • • 發佈:2020-08-10
轉自:https://www.jianshu.com/p/48f6dea265eb
pyinstaller簡明教程
安裝pyinstaller
pip install pyinstaller
是最簡單的安裝方式,但也常常由於各種原因報錯,這就需要我們通過whl檔案來下載,但是whl檔案安裝也有考究,具體參考我之前的教程:Python安裝whl檔案那些坑,下載whl一般可以在whl檔案倉庫中找到,如果找不到就去第三方庫的官網下載,我個人比較傾向於第二種。
這是我最後一次闡述pip install的問題,後續的教程都不再贅述
pyinstaller基本用法
假如我們要打包一個demo.py檔案,基本過程是:
開啟cmd,並切換到demo.py檔案所在的目錄,注意路徑中不要有中文
執行命令:pyinstaller demo.py
在當前的目錄下,將會生成兩個資料夾:build和dist。dist裡面就是所有可執行檔案,點選demo.exe就能運行了。
pyinstaller指令的常見可選引數:
可選引數 | 格式舉例 | 功能說明 |
---|---|---|
-F |
pyinstaller -F demo.py |
只在dist中生產一個demo.exe檔案。 |
-D |
pyinstaller -D demo.py |
預設選項,除了demo.exe外,還會在在dist中生成很多依賴檔案,推薦使用。 |
-c |
pyinstaller -c demo.py |
預設選項,只對windows有效,使用控制檯,就像編譯執行C程式後的黑色彈窗。 |
-w |
pyinstaller -w demo.py |
只對windows有效,不使用控制檯。 |
-p |
pyinstaller -p E:\python\Lib\site-packages demo.py |
設定匯入路徑,一般用不到。 |
-i |
pyinstaller -i D:\file.icon demo.py |
將file.icon設定為exe檔案的圖示,推薦一個icon網站:icon |
上面的可選引數可以組合使用,比如
pyinstaller -F -i D:\file.icon demo.py
。
能夠from xxx import yyy
就儘量不要import xxx
,這樣可以減少打包後的體積。
pyinstaller高階功法
一般而言,pyinstaller的基本用法已經夠用了,但是有特殊需求,比如打包圖片資原始檔時,就必須用到它的高階功法了。
首先得了解spec檔案,簡而言之,spec檔案就是一份告訴pyinstaller如何打包的配置檔案。
可以通過pyi-makespec demo.py
來生成demo.spec檔案。其內容如下:
# -*- mode: python -*-
block_cipher = None
resources = (("inspurer.db", "."), ("dlib_face_recognition_resnet_model_v1.dat", "."),
("shape_predictor_68_face_landmarks.dat", "."), ("close_logcat.png", ".")
, ("open_logcat.png", "."), ("finish_register.png", "."), ("new_register.png", ".")
, ("start_punchcard.png", "."), ("end_puncard.png", "."), ("index.png", "."))
a = Analysis(['workAttendanceSystem.py'],
pathex=['C:\\Users\\lenovo\\Desktop\\test\\python'],
binaries=[],
datas=resources,
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
[],
exclude_binaries=True,
name='workAttendanceSystem',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
name='workAttendanceSystem')
對於上面這個檔案,需要注意兩點:
除了resources配置是我新增修改之外,其餘全是自動生成,這個配置是用來新增資原始檔的。
pathex是工程的根目錄。
生成並配置好spec檔案後,我們可以通過pyinstaller demo.spec
來執行打包任務。