PyInstaller運(yùn)行原理及常用操作詳解
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 支持的常用選項(xiàng)
-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 |
指定程序運(yùn)行時不顯示命令行窗口(僅對 Windows 有效) eg:pyinstaller -w demo.py |
-c,--nowindowed,--console |
指定使用命令行窗口運(yùn)行程序(僅對 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 使用分號,Linux 使用冒號)來分隔多個路徑 eg:pyinstaller -p E:\python\Lib\site-packages demo.py |
-n NAME,--name=NAME | 指定項(xiàng)目(產(chǎn)生的 spec)名字。如果省略該選項(xiàng),那么第一個腳本的主文件名將作為 spec 的名字 |
1、創(chuàng)建一個 app 目錄,在該目錄下創(chuàng)建一個 入口app.py 文件
# 進(jìn)入該app目錄內(nèi),執(zhí)行以下語法
pyinstaller -F app.py
當(dāng)生成完成后,將會在此 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app.exe 文件,這就是使用 PyInstaller 工具生成的 exe 程序。
在命令行窗口中進(jìn)入 dist 目錄下,在該目錄執(zhí)行 app.exe ,將會看到該程序執(zhí)行結(jié)果。
注:若程序沒有可視化界面,不能雙擊執(zhí)行程序
2、創(chuàng)建一個 app 目錄,在該目錄下創(chuàng)建一個 入口app.py 文件
# 進(jìn)入該app目錄內(nèi),執(zhí)行以下語法
pyinstaller -D app.py
執(zhí)行上面命令,將看到詳細(xì)的生成過程。當(dāng)生成完成后,將會在 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app 子目錄,在該子目錄下包含了大量 .dll 文件和 .pyz 文件,它們都是 app.exe 程序的支撐文件。在命令行窗口中運(yùn)行該 app.exe 程序,同樣可以看到與前一個 app.exe 程序相同的輸出結(jié)果。
3、高級用法
當(dāng)有特殊需求,比如打包圖片資源文件時,就必須用到它的高級用法。
首先得了解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')
對于上面這個文件,需要注意兩點(diǎn):
除了resources配置是我添加修改之外,其余全是自動生成,這個配置是用來添加資源文件的。
pathex是工程的根目錄。
生成并配置好spec文件后,我們可以通過pyinstaller demo.spec來執(zhí)行打包任務(wù)。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中os.path模塊的8個神奇函數(shù)分享
在Python編程中,os.path模塊是一個非常重要的模塊,它提供了用于處理文件路徑和目錄的函數(shù),本文將介紹os.path模塊中最常用的8個內(nèi)置函數(shù),需要的可以參考下2023-11-11Python操作MySQL數(shù)據(jù)庫的基本方法(查詢與更新)
在工作中我們需要經(jīng)常對數(shù)據(jù)庫進(jìn)行操作,比如 Oracle、MySQL、SQL Sever等,這篇文章主要給大家介紹了關(guān)于Python操作MySQL數(shù)據(jù)庫的基本方法包括了數(shù)據(jù)查詢與數(shù)據(jù)更新(新增、刪除、修改),需要的朋友可以參考下2023-09-09如何用python多次調(diào)用exe文件運(yùn)行不同的結(jié)果
有個C++項(xiàng)目是讀取配置參數(shù)文件并打印對應(yīng)的結(jié)果,后來需要多次修改配置文件并運(yùn)行,于是想到寫個python腳本執(zhí)行這一過程,今天通過本文給大家分享python多次調(diào)用exe文件運(yùn)行不同的結(jié)果,感興趣的朋友一起看看吧2023-05-05Python性能調(diào)優(yōu)的十個小技巧總結(jié)
大家好,今天這篇文章關(guān)于Python性能調(diào)優(yōu)的10個小技巧,每天花5-10分鐘閱讀我的文章,對你技術(shù)提升一定會有幫助。喜歡記得收藏以防迷路2021-11-11利用python實(shí)現(xiàn)微信頭像加紅色數(shù)字功能
通過Python實(shí)現(xiàn)將你的 QQ 頭像(或者微博頭像)右上角加上紅色的數(shù)字,類似于微信未讀信息數(shù)量那種提示效果。下面通過本文給大家分享python實(shí)現(xiàn)微信頭像加紅色數(shù)字功能,感興趣的朋友一起看看吧2018-03-03