python利用pyinstaller打包简明教程
转自:https://www.jianshu.com/p/48f6dea265eb
pyinstaller简明教程
安装pyinstaller
pip install pyinstaller是最简单的安装方式,但也常常由于各种原因报错,这就需要我们通过whl文件来下载,但是whl文件安装也有考究,具体参考我之前的教程:Python安装whl文件那些坑,下载whl一般可以在whl文件仓库中找到,如果找不到就去第三方库的官网下载,我个人比较倾向于第二种。
这是我最后一次阐述pip install的问题,后续的教程都不再赘述
pyinstaller基本用法
假如我们要打包一个demo.py文件,基本过程是:
打开cmd,并切换到demo.py文件所在的目录,注意路径中不要有中文
执行命令:pyinstaller demo.py
在当前的目录下,将会生成两个文件夹:build和dist。dist里面就是所有可执行文件,点击demo.exe就能运行了。
pyinstaller指令的常见可选参数:
| 可选参数 | 格式举例 | 功能说明 | 
|---|---|---|
-F | 
pyinstaller -F demo.py | 
只在dist中生产一个demo.exe文件。 | 
-D | 
pyinstaller -D demo.py | 
默认选项,除了demo.exe外,还会在在dist中生成很多依赖文件,推荐使用。 | 
-c | 
pyinstaller -c demo.py | 
默认选项,只对windows有效,使用控制台,就像编译运行C程序后的黑色弹窗。 | 
-w | 
pyinstaller -w demo.py | 
只对windows有效,不使用控制台。 | 
-p | 
pyinstaller -p E:\python\Lib\site-packages demo.py | 
设置导入路径,一般用不到。 | 
-i | 
pyinstaller -i D:\file.icon demo.py | 
将file.icon设置为exe文件的图标,推荐一个icon网站:icon | 
上面的可选参数可以组合使用,比如
pyinstaller -F -i D:\file.icon demo.py。
能够from xxx import yyy就尽量不要import xxx,这样可以减少打包后的体积。
pyinstaller高阶功法
一般而言,pyinstaller的基本用法已经够用了,但是有特殊需求,比如打包图片资源文件时,就必须用到它的高阶功法了。
首先得了解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利用pyinstaller打包简明教程的更多相关文章
- 利用PyInstaller打包exe文件
		
前言 平常我们通过Python写完一些小脚本之后,如果使用不频繁的话,一般会选择在DOS界面直接跑脚本,或者在IDE中运行.但当我们需要频繁使用某些脚本,或者在没有Python环境的机器上也能顺利运行 ...
 - 预测球队比赛结果及利用pyinstaller打包文件
		
一.预测乒乓球球队比赛成绩 1.乒乓球比赛规则 一局比赛:在一局比赛中,先得11分的一方为胜方:10平后,先多得2分的一方为胜方. 一场比赛:单打的淘汰赛采用七局四胜制,双打淘汰赛和团体赛采用五局三胜 ...
 - python用pyinstaller打包成exe文件
		
版本为Python2.7 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pip命 ...
 - 【Python】pyinstaller打包运行报错failed to execute script main
		
前言 最近用pyinstaller打包的时候一直报"failed to execute script main". 最终使用"pyinstaller --hidden-i ...
 - python 使用pyinstaller打包程序
		
使用pyinstaller 打包.py脚本,在其他计算机可以直接运行,不需要python环境 安装pyinstaller库 pip install pystaller 打包程序 pyinstaller ...
 - 利用pyinstaller 打包Python文件
		
1.下载安装pyinstaller模块 cmd 命令: pip install pyinstaller cmd命令: pip list 查看自己安装的模块 2.建议把要大包的Python文件单独放到新 ...
 - Python | 用Pyinstaller打包发布exe应用
		
参考:https://jingyan.baidu.com/article/a378c960b47034b3282830bb.html https://ask.csdn.net/questions/72 ...
 - python使用Pyinstaller打包
		
一.前言 python文件打包,将.py文件转化成.exe文件(windows平台),可以使用Pyinstaller来打包 Pyinstaller可以在全平台下使用,但是请注意打包生成的文件不能在全平 ...
 - Python 函数装饰器简明教程
		
定义类的静态方法时,就使用了装饰器.其实面向对象中的静态方法都是使用了装饰器. @staticmethod def jump(): print(" 3 meters high") ...
 - python pyinstaller 打包exe报错
		
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 在导入pyqt5包之前加上如下代码 import sysimport osif hasattr ...
 
随机推荐
- 关于lesscss和颜色梯度(linear-gradient )的一些问题
			
一.什么是less? 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, F ...
 - Visual Studio 2022 离线包手动下载和清理
			
下载离线vsvs_Professional.exe --layout e:\vs2022 --all --includeRecommended --includeOptional --lang zh- ...
 - Q:带宽检测 iperf工具
			
一.下载 iperf的下载地址为:https://iperf.fr/iperf-download.php,选择相应的版本 linux安装 rpm -qa|grep -i rperf rpm -ivh ...
 - 网页返回unicode源码 python解码详细步骤
			
刚入门python! 记录一下网页返回源码,中文部分被unicode编码,python如何处理 1.先提取编码后的数据(如果不提取正篇源码直接unicode解码,解码方法无法识别) 这个步骤属于逻辑问 ...
 - 重复引入reactor-netty
			
java.lang.NoClassDefFoundError: reactor/util/retry/Retry at reactor.netty.http.client.HttpClientConn ...
 - git的回退以及合并,删除什么的
			
有时候不小心合并了别的分支中的commit.我们需要回退某些提交记录.可以通过reset来操作,reset 会回退到指定commit.这种方式会删除记录,我们最好使用revert命令来操作 git r ...
 - Nginx自带的变量
			
$args #请求中的参数值$query_string #同 $args$arg_NAME #GET请求中NAME的值$is_args #如果请求中有参数,值为"?",否则为空字符 ...
 - Graphx二度关系
			
import org.apache.spark.graphx._import org.apache.spark.rdd.RDDval vertexArray = Array( (1L, (" ...
 - C# Set集合
			
包含不重复元素的集合称为"集(set)"..NET Framework包含两个集HashSet<T>和SortedSet<T>,它们都实现ISet<T ...
 - python:m3u8转mp4
			
import re,requests,time,os import threadpool res = requests.get(url="http://pili-vod.tebaobao.v ...