PyInstaller運(yùn)行原理及常用操作詳解
pyinstaller 屬于Python第三方庫(kù),使用前需先安裝
# 首先安裝pyinstaller
pip install pyinstaller
PyInstaller生成可執(zhí)行程序
# PyInstaller 工具的命令語法如下: # 1、第一種 pyinstaller options ~/myproject/source/myscript.py # 2、第一種 pyinstaller "C:\Documents and Settings\project\myscript.spec"
PyInstaller 支持的常用選項(xiàng)
| -h,--help | 查看該模塊的幫助信息 |
|---|---|
| -F,-onefile |
dist中產(chǎn)生單個(gè)的可執(zhí)行文件 eg:pyinstaller -F demo.py |
| -D,--onedir |
產(chǎn)生一個(gè)目錄(包含多個(gè)文件)作為可執(zhí)行程序 eg:pyinstaller -D demo.py |
| -a,--ascii | 不包含 Unicode 字符集支持 |
| -d,--debug | 產(chǎn)生 debug 版本的可執(zhí)行文件 |
| -w,--windowed,--noconsolc |
指定程序運(yùn)行時(shí)不顯示命令行窗口(僅對(duì) Windows 有效) eg:pyinstaller -w demo.py |
| -c,--nowindowed,--console |
指定使用命令行窗口運(yùn)行程序(僅對(duì) Windows 有效) eg:pyinstaller -c demo.py |
| -o DIR,--out=DIR | 指定 spec 文件的生成目錄。如果沒有指定,則默認(rèn)使用當(dāng)前目錄來生成 spec 文件 |
| -p DIR,--path=DIR |
設(shè)置 Python 導(dǎo)入模塊的路徑(和設(shè)置 PYTHONPATH 環(huán)境變量的作用相似)。也可使用路徑分隔符(Windows 使用分號(hào),Linux 使用冒號(hào))來分隔多個(gè)路徑 eg:pyinstaller -p E:\python\Lib\site-packages demo.py |
| -n NAME,--name=NAME | 指定項(xiàng)目(產(chǎn)生的 spec)名字。如果省略該選項(xiàng),那么第一個(gè)腳本的主文件名將作為 spec 的名字 |
1、創(chuàng)建一個(gè) app 目錄,在該目錄下創(chuàng)建一個(gè) 入口app.py 文件
# 進(jìn)入該app目錄內(nèi),執(zhí)行以下語法
pyinstaller -F app.py
當(dāng)生成完成后,將會(huì)在此 app 目錄下看到多了一個(gè) dist 目錄,并在該目錄下看到有一個(gè) app.exe 文件,這就是使用 PyInstaller 工具生成的 exe 程序。
在命令行窗口中進(jìn)入 dist 目錄下,在該目錄執(zhí)行 app.exe ,將會(huì)看到該程序執(zhí)行結(jié)果。
注:若程序沒有可視化界面,不能雙擊執(zhí)行程序
2、創(chuàng)建一個(gè) app 目錄,在該目錄下創(chuàng)建一個(gè) 入口app.py 文件
# 進(jìn)入該app目錄內(nèi),執(zhí)行以下語法
pyinstaller -D app.py
執(zhí)行上面命令,將看到詳細(xì)的生成過程。當(dāng)生成完成后,將會(huì)在 app 目錄下看到多了一個(gè) dist 目錄,并在該目錄下看到有一個(gè) app 子目錄,在該子目錄下包含了大量 .dll 文件和 .pyz 文件,它們都是 app.exe 程序的支撐文件。在命令行窗口中運(yùn)行該 app.exe 程序,同樣可以看到與前一個(gè) app.exe 程序相同的輸出結(jié)果。
3、高級(jí)用法
當(dāng)有特殊需求,比如打包圖片資源文件時(shí),就必須用到它的高級(jí)用法。
首先得了解spec文件,簡(jiǎn)而言之,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')
對(duì)于上面這個(gè)文件,需要注意兩點(diǎn):
除了resources配置是我添加修改之外,其余全是自動(dòng)生成,這個(gè)配置是用來添加資源文件的。
pathex是工程的根目錄。
生成并配置好spec文件后,我們可以通過pyinstaller demo.spec來執(zhí)行打包任務(wù)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python 過濾錯(cuò)誤log并導(dǎo)出的實(shí)例
今天小編就為大家分享一篇Python 過濾錯(cuò)誤log并導(dǎo)出的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-12-12
python操作注冊(cè)表的方法實(shí)現(xiàn)
Python提供了winreg模塊,可以用于操作Windows注冊(cè)表,本文就來介紹一下python操作注冊(cè)表的方法實(shí)現(xiàn),主要包括打開注冊(cè)表、讀取注冊(cè)表值、寫入注冊(cè)表值和關(guān)閉注冊(cè)表,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例
這篇文章主要介紹了基于基于django channel實(shí)現(xiàn)websocket的聊天室的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-04-04
python matplotlib中的subplot函數(shù)使用詳解
今天小編就為大家分享一篇python matplotlib中的subplot函數(shù)使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
淺談Pandas:Series和DataFrame間的算術(shù)元素
今天小編就為大家分享一篇淺談Pandas:Series和DataFrame間的算術(shù)元素,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python基于Tkinter庫(kù)實(shí)現(xiàn)簡(jiǎn)單文本編輯器實(shí)例
這篇文章主要介紹了python基于Tkinter庫(kù)實(shí)現(xiàn)簡(jiǎn)單文本編輯器,實(shí)例分析了Python使用Tkinter庫(kù)實(shí)現(xiàn)簡(jiǎn)單桌面應(yīng)用程序的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-05-05
Python實(shí)現(xiàn)RabbitMQ6種消息模型的示例代碼
這篇文章主要介紹了Python實(shí)現(xiàn)RabbitMQ6種消息模型的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03

