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