PyInstaller运行原理及常用操作详解
作者:_夕颜 发布时间:2022-09-15 03:57:26
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来执行打包任务。
来源:https://www.cnblogs.com/caijunchao/p/12845620.html
猜你喜欢
- 概述nodejs内置模块指的是除默认提供的语法之外,提供的美容,无需下载,直接引入,引入只写名称即可。nodejs内置模块:1、path模块
- 阅读上一章:chapter 5 表单Chapter 6 <strong>,<em>与其他短语元素在引言和前面的章节中
- <table border="1" id="tab"> <tr>
- Python是一种开源的编程语言,可用于Web编程、数据科学、人工智能以及许多科学应用。学习Python可以让程序员专注于解决问题,而不是语
- 使用expdp时,遇到”ORA-39002、ORA-39070......”连续报错。1、 遇到的问题C:\Users\Admi
- CAST、CONVERT都可以执行数据类型转换。在大部分情况下,两者执行同样的功能,不同的是CONVERT还提供一些特别的日期格式转换,而C
- 正在看的ORACLE教程是:ORACLE常见错误代码的分析与解决(三)。  
- 创建数据库CREATE DATABASE 语法用于创建一个数据库。语法: PHP MySQL 函数库中,mysql_query()
- 这篇论坛文章主要介绍了SQL Server 2005数据库镜像的配置脚本,详细内容请大家参考下文:SQL Server 2005数据库镜像配
- JS继承 JavaScript中没有类的概念,与类相关的继承的概念更是无从谈起,但是我们可以通过特殊的语法来 模拟面向对象语言中的继承。 在
- 本文实例讲述了JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果。分享给大家供大家参考,具体如下:思路:1、首先用把密码框用txt暂
- 但凡设计师都对简洁的设计情有独钟,我们不喜欢复杂,却也不能不会rich。先来看下“rich”在字典里的意思:(1) having an ab
- 用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在
- 字典中元素的个数计算len(字典名)举例:person={"姓名":"张三","年龄&qu
- 微服务架构中收集通常大家都采用ELK进行日志收集,同时我们还采用了SkyWalking进行链路跟踪,而SkyWalking数据存储也用到了E
- 有时我们有很多文件(如图片),我们需要对每一个文件进行操作。 我们还需要一份文件的名字来进行遍历,这时我们首先需要建立一份文件名单,有时还会
- 在构建模型时,调参是极为重要的一个步骤,因为只有选择最佳的参数才能构建一个最优的模型。但是应该如何确定参数的值呢?所以这里记录一下选择参数的
- 任何一个行业里,当有一头近乎垄断的大象盘踞着的时候,生活在大象身后的蚂蚁们既是悲哀又是幸运的。悲哀的是市场已近乎被大象垄断留给他们的空间已经
- python的numpy 能生成一定概率分布的随机数,但如果需要更具体的概率密度,累积概率,就要使用scipy.stats。scipy.st
- NumPy提供了多种存取数组内容的文件操作函数。保存数组数据的文件可以是二进制格式或者文本格式。二进