pyinstaller 屬于Python第三方庫,使用前需先安裝
# 首先安裝pyinstaller
pip install pyinstaller
PyInstaller生成可執行程序
1
2
3
4
5
6
7
|
# 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目錄內,執行以下語法
pyinstaller -F app.py
當生成完成后,將會在此 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app.exe 文件,這就是使用 PyInstaller 工具生成的 exe 程序。
在命令行窗口中進入 dist 目錄下,在該目錄執行 app.exe ,將會看到該程序執行結果。
注:若程序沒有可視化界面,不能雙擊執行程序
2、創建一個 app 目錄,在該目錄下創建一個 入口app.py 文件
# 進入該app目錄內,執行以下語法
pyinstaller -D app.py
執行上面命令,將看到詳細的生成過程。當生成完成后,將會在 app 目錄下看到多了一個 dist 目錄,并在該目錄下看到有一個 app 子目錄,在該子目錄下包含了大量 .dll 文件和 .pyz 文件,它們都是 app.exe 程序的支撐文件。在命令行窗口中運行該 app.exe 程序,同樣可以看到與前一個 app.exe 程序相同的輸出結果。
3、高級用法
當有特殊需求,比如打包圖片資源文件時,就必須用到它的高級用法。
首先得了解spec文件,簡而言之,spec文件就是一份告訴pyinstaller如何打包的配置文件。
可以通過pyi-makespec demo.py來生成demo.spec文件。其內容如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# -*- 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來執行打包任務。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://www.cnblogs.com/caijunchao/p/12845620.html