PyInstaller运行原理及常用操作详解


Posted in Python onJune 13, 2020

pyinstaller 属于Python第三方库,使用前需先安装

# 首先安装pyinstaller
pip install pyinstaller

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目录内,执行以下语法
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文件。其内容如下:

# -*- 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来执行打包任务。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现博客文章爬虫示例
Feb 26 Python
Python实现对比不同字体中的同一字符的显示效果
Apr 23 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
关于Python元祖,列表,字典,集合的比较
Jan 06 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
PyQt4实现下拉菜单可供选择并打印出来
Apr 20 Python
python http基本验证方法
Dec 26 Python
python从入门到精通 windows安装python图文教程
May 18 Python
Django后台admin的使用详解
Jul 08 Python
opencv之为图像添加边界的方法示例
Dec 26 Python
python 遗传算法求函数极值的实现代码
Feb 11 Python
PyTorch dropout设置训练和测试模式的实现
May 27 Python
Pandas缺失值2种处理方式代码实例
Jun 13 #Python
Python Django中间件使用原理及流程分析
Jun 13 #Python
Django QuerySet查询集原理及代码实例
Jun 13 #Python
Python celery原理及运行流程解析
Jun 13 #Python
基于Python实现视频的人脸融合功能
Jun 12 #Python
使用Keras实现简单线性回归模型操作
Jun 12 #Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 #Python
You might like
PHP 开发环境配置(Zend Server安装)
2010/04/28 PHP
学习php笔记 字符串处理
2010/10/19 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
destoon利用Rewrite规则设置网站安全
2014/06/21 PHP
php打印输出棋盘的实现方法
2014/12/23 PHP
PHP异常处理浅析
2015/05/12 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
js的闭包的一个示例说明
2008/11/18 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
js实现点击图片改变页面背景图的方法
2015/02/28 Javascript
封装好的javascript前端分页插件pagination
2016/01/04 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
jQuery实用密码强度检测
2017/03/02 Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
2017/12/05 Javascript
vue-cli3搭建项目的详细步骤
2018/12/05 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
JavaScript实现多层颜色选项卡嵌套
2020/09/21 Javascript
Python实现类似比特币的加密货币区块链的创建与交易实例
2018/03/20 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
可持续未来的时尚基础:Alternative Apparel
2019/05/06 全球购物
有趣的睡衣和礼物:LazyOne
2019/11/27 全球购物
大学自主招生自荐信范文
2014/02/26 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
运动会加油稿100字
2014/09/19 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
2014年财政所工作总结
2014/11/22 职场文书
医生个人年度总结
2015/02/28 职场文书
SQLServer2008提示评估期已过解决方案
2021/04/12 SQL Server
html实现弹窗的实例
2021/06/09 HTML / CSS
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang
Win11如何修改dns?Win11修改dns图文教程
2022/01/18 数码科技