PyInstaller运行原理及常用操作详解
pyinstaller属于Python第三方库,使用前需先安装
#首先安装pyinstaller
pipinstallpyinstaller
PyInstaller生成可执行程序
#PyInstaller工具的命令语法如下: #1、第一种 pyinstalleroptions~/myproject/source/myscript.py #2、第一种 pyinstaller"C:\DocumentsandSettings\project\myscript.spec"
PyInstaller支持的常用选项
-h,--help | 查看该模块的帮助信息 |
---|---|
-F,-onefile |
dist中产生单个的可执行文件 eg:pyinstaller-Fdemo.py |
-D,--onedir |
产生一个目录(包含多个文件)作为可执行程序 eg:pyinstaller-Ddemo.py |
-a,--ascii | 不包含Unicode字符集支持 |
-d,--debug | 产生debug版本的可执行文件 |
-w,--windowed,--noconsolc |
指定程序运行时不显示命令行窗口(仅对Windows有效) eg:pyinstaller-wdemo.py |
-c,--nowindowed,--console |
指定使用命令行窗口运行程序(仅对Windows有效) eg:pyinstaller-cdemo.py |
-oDIR,--out=DIR | 指定spec文件的生成目录。如果没有指定,则默认使用当前目录来生成spec文件 |
-pDIR,--path=DIR |
设置Python导入模块的路径(和设置PYTHONPATH环境变量的作用相似)。也可使用路径分隔符(Windows使用分号,Linux使用冒号)来分隔多个路径 eg:pyinstaller-pE:\python\Lib\site-packagesdemo.py |
-nNAME,--name=NAME | 指定项目(产生的spec)名字。如果省略该选项,那么第一个脚本的主文件名将作为spec的名字 |
1、创建一个app目录,在该目录下创建一个入口app.py文件
#进入该app目录内,执行以下语法
pyinstaller-Fapp.py
当生成完成后,将会在此app目录下看到多了一个dist目录,并在该目录下看到有一个app.exe文件,这就是使用PyInstaller工具生成的exe程序。
在命令行窗口中进入dist目录下,在该目录执行app.exe,将会看到该程序执行结果。
注:若程序没有可视化界面,不能双击执行程序
2、创建一个app目录,在该目录下创建一个入口app.py文件
#进入该app目录内,执行以下语法
pyinstaller-Dapp.py
执行上面命令,将看到详细的生成过程。当生成完成后,将会在app目录下看到多了一个dist目录,并在该目录下看到有一个app子目录,在该子目录下包含了大量.dll文件和.pyz文件,它们都是app.exe程序的支撑文件。在命令行窗口中运行该app.exe程序,同样可以看到与前一个app.exe程序相同的输出结果。
3、高级用法
当有特殊需求,比如打包图片资源文件时,就必须用到它的高级用法。
首先得了解spec文件,简而言之,spec文件就是一份告诉pyinstaller如何打包的配置文件。
可以通过pyi-makespecdemo.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')
对于上面这个文件,需要注意两点:
除了resources配置是我添加修改之外,其余全是自动生成,这个配置是用来添加资源文件的。
pathex是工程的根目录。
生成并配置好spec文件后,我们可以通过pyinstallerdemo.spec来执行打包任务。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。