pyinstaller 屬於Python第三方庫,使用前需先安裝
PyInstaller生成可執行程序
# PyInstaller 工具的命令語法如下: # 1、第一種 pyinstaller options ~/myproject/source/myscript.py # 2、第一種 pyinstaller "C:\Documents and Settings\project\myscript.spec"
PyInstaller 支持的常用選項
-h,--help | 查看該模塊的幫助信息 |
---|---|
-F,-onefile | dist中產生單個的可執行文件 eg:pyinstaller -F demo.py |
-D,--onedir | 產生一個目錄(包含多個文件)作為可執行程序 eg:pyinstaller -D demo.py |
-a,--ascii | 不包含 Unicode 字符集支持 |
-d,--debug | 產生 debug 版本的可執行文件 |
-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 環境變量的作用相似)。也可使用路徑分隔符(Windows 使用分號,Linux 使用冒號)來分隔多個路徑 eg:pyinstaller -p E:\python\Lib\site-packages demo.py |
-n NAME,--name=NAME | 指定項目(產生的 spec)名字。如果省略該選項,那么第一個腳本的主文件名將作為 spec 的名字 |
1、創建一個 app 目錄,在該目錄下創建一個 入口app.py 文件
當生成完成后,將會在此 app 目錄下看到多了一個 dist 目錄,並在該目錄下看到有一個 app.exe 文件,這就是使用 PyInstaller 工具生成的 exe 程序。
在命令行窗口中進入 dist 目錄下,在該目錄執行 app.exe ,將會看到該程序執行結果。
注:若程序沒有可視化界面,不能雙擊執行程序
2、創建一個 app 目錄,在該目錄下創建一個 入口app.py 文件
執行上面命令,將看到詳細的生成過程。當生成完成后,將會在 app 目錄下看到多了一個 dist 目錄,並在該目錄下看到有一個 app 子目錄,在該子目錄下包含了大量 .dll 文件和 .pyz 文件,它們都是 app.exe 程序的支撐文件。在命令行窗口中運行該 app.exe 程序,同樣可以看到與前一個 app.exe 程序相同的輸出結果。
3、高級用法
當有特殊需求,比如打包圖片資源文件時,就必須用到它的高級用法。
首先得了解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')
對於上面這個文件,需要注意兩點:
生成並配置好spec文件后,我們可以通過除了resources配置是我添加修改之外,其余全是自動生成,這個配置是用來添加資源文件的。
pathex是工程的根目錄。
pyinstaller demo.spec
來執行打包任務。