PyInstaller運行原理及常用操作詳解
pyinstaller 屬于Python第三方庫,使用前需先安裝
# 首先安裝pyinstaller
pip install pyinstaller
PyInstaller生成可執(zhí)行程序
# PyInstaller 工具的命令語法如下: # 1、第一種 pyinstaller options ~/myproject/source/myscript.py # 2、第一種 pyinstaller "C:\Documents and Settings\project\myscript.spec"
PyInstaller 支持的常用選項
| -h,--help | 查看該模塊的幫助信息 |
|---|---|
| -F,-onefile |
dist中產(chǎn)生單個的可執(zhí)行文件 eg:pyinstaller -F demo.py |
| -D,--onedir |
產(chǎn)生一個目錄(包含多個文件)作為可執(zhí)行程序 eg:pyinstaller -D demo.py |
| -a,--ascii | 不包含 Unicode 字符集支持 |
| -d,--debug | 產(chǎn)生 debug 版本的可執(zhí)行文件 |
| -w,--windowed,--noconsolc |
指定程序運行時不顯示命令行窗口(僅對 Windows 有效) eg:pyinstaller -w demo.py |
| -c,--nowindowed,--console |
指定使用命令行窗口運行程序(僅對 Windows 有效) eg:pyinstaller -c demo.py |
| -o DIR,--out=DIR | 指定 spec 文件的生成目錄。如果沒有指定,則默認使用當前目錄來生成 spec 文件 |
| -p DIR,--path=DIR |
設置 Python 導入模塊的路徑(和設置 PYTHONPATH 環(huán)境變量的作用相似)。也可使用路徑分隔符(Windows 使用分號,Linux 使用冒號)來分隔多個路徑 eg:pyinstaller -p E:\python\Lib\site-packages demo.py |
| -n NAME,--name=NAME | 指定項目(產(chǎn)生的 spec)名字。如果省略該選項,那么第一個腳本的主文件名將作為 spec 的名字 |
1、創(chuàng)建一個 app 目錄,在該目錄下創(chuàng)建一個 入口app.py 文件
# 進入該app目錄內(nèi),執(zhí)行以下語法
pyinstaller -F app.py
當生成完成后,將會在此 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app.exe 文件,這就是使用 PyInstaller 工具生成的 exe 程序。
在命令行窗口中進入 dist 目錄下,在該目錄執(zhí)行 app.exe ,將會看到該程序執(zhí)行結果。
注:若程序沒有可視化界面,不能雙擊執(zhí)行程序
2、創(chuàng)建一個 app 目錄,在該目錄下創(chuàng)建一個 入口app.py 文件
# 進入該app目錄內(nèi),執(zhí)行以下語法
pyinstaller -D app.py
執(zhí)行上面命令,將看到詳細的生成過程。當生成完成后,將會在 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app 子目錄,在該子目錄下包含了大量 .dll 文件和 .pyz 文件,它們都是 app.exe 程序的支撐文件。在命令行窗口中運行該 app.exe 程序,同樣可以看到與前一個 app.exe 程序相同的輸出結果。
3、高級用法
當有特殊需求,比如打包圖片資源文件時,就必須用到它的高級用法。
首先得了解spec文件,簡而言之,spec文件就是一份告訴pyinstaller如何打包的配置文件。
可以通過pyi-makespec demo.py來生成demo.spec文件。其內(nèi)容如下:
# -*- 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來執(zhí)行打包任務。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
Python中os.path模塊的8個神奇函數(shù)分享
在Python編程中,os.path模塊是一個非常重要的模塊,它提供了用于處理文件路徑和目錄的函數(shù),本文將介紹os.path模塊中最常用的8個內(nèi)置函數(shù),需要的可以參考下2023-11-11
Python操作MySQL數(shù)據(jù)庫的基本方法(查詢與更新)
在工作中我們需要經(jīng)常對數(shù)據(jù)庫進行操作,比如 Oracle、MySQL、SQL Sever等,這篇文章主要給大家介紹了關于Python操作MySQL數(shù)據(jù)庫的基本方法包括了數(shù)據(jù)查詢與數(shù)據(jù)更新(新增、刪除、修改),需要的朋友可以參考下2023-09-09
如何用python多次調(diào)用exe文件運行不同的結果
有個C++項目是讀取配置參數(shù)文件并打印對應的結果,后來需要多次修改配置文件并運行,于是想到寫個python腳本執(zhí)行這一過程,今天通過本文給大家分享python多次調(diào)用exe文件運行不同的結果,感興趣的朋友一起看看吧2023-05-05
利用python實現(xiàn)微信頭像加紅色數(shù)字功能
通過Python實現(xiàn)將你的 QQ 頭像(或者微博頭像)右上角加上紅色的數(shù)字,類似于微信未讀信息數(shù)量那種提示效果。下面通過本文給大家分享python實現(xiàn)微信頭像加紅色數(shù)字功能,感興趣的朋友一起看看吧2018-03-03

