python pyinstaller库
简要
pyinstaller模块主要用于python代码打包成exe程序直接使用,这样在其它电脑上即使没有python环境也是可以运行的。
用法
一.安装
pyinstaller属于第三方库,因此在使用的时候需提前安装
- pip install pyinstaller
二.配置spec文件
1.配置生成exe程序文件夹
(1)如果不熟悉spec配置内容,可以在终端运行如下指令生成固定模板
- pyinstaller --name myapp main.py # myapp为生成的spec文件名称,main.py为打包的文件
(2)运行完后我们会看见如下几个文件,dist和build直接删除即可。我看打开myapp.spec文件可以看见配置信息。
- # -*- mode: python ; coding: utf-8 -*-
- block_cipher = None
- a = Analysis(
- ['main.py','hello.py'], 注:要打包的模块,按照先后顺序运行
- pathex=['C:/Users/pythonProject'], 注:要打包的Python源代码的路径列表。
- binaries=[], 注:
- datas=[], 注:要打包的非Python资源(例如图像、配置文件等)列表。
- hiddenimports=[''requests], 注:必需的隐藏导入列表,用于告诉PyInstaller找到其他未明确指定的依赖项。
- hookspath=[], 注:一个路径列表,其中包含指定要自定义的钩子模块的目录。
- hooksconfig={}, 注:
- runtime_hooks=[], 注:用于在应用程序运行时运行的Python代码文件列表。
- excludes=[], 注:不包括在生成的可执行文件中的模块列表
- win_no_prefer_redirects=False, 注:
- win_private_assemblies=False,
- cipher=block_cipher, 注:用于加密Python字节码的密码。
- noarchive=False,
- )
- pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
- 注:a.pure: 一个布尔值,指示是否生成纯Python字节码。如果为True,则PyInstaller将不包括任何二进制文件或库。
a.zipped_data: 用于包含OneFile模式下的所有Python脚本和资源的元组。
- exe = EXE(
- pyz, 注:一个PYZ实例,其中包含要打包的所有Python脚本和资源。
- a.scripts, 注:应用程序的主Python脚本列表。
- [],
- exclude_binaries=True,
- name='myapp', 注:生成exe可执行文件的名称
- debug=False, 注:一个布尔值,指示是否生成调试版本的可执行文件
- bootloader_ignore_signals=False, 注:一个布尔值,指示是否忽略启动加载器的信号。
- strip=False, 注:一个布尔值,指示是否对可执行文件进行符号剥离。
- upx=True, 注:一个布尔值,指示是否使用UPX压缩可执行文件
- console=True, 注:是否开启dos窗口
- disable_windowed_traceback=False,
- argv_emulation=False,
- target_arch=None,
- codesign_identity=None,
- entitlements_file=None,
icon:'图标.ico' 注:用户生成exe文件的封面,后缀必须是ico格式,转换地址:https://convertio.co/zh/download/88c5806204642c8a1c10e65b1bef9b5886f6d8/- )
- coll = COLLECT(
- exe, 注:你的Python脚本生成的可执行文件路径(通常是与spec文件同名的文件)
- a.binaries, 注:二进制对象列表,表示其他相关二进制文件的位置以及将它们复制到输出目录的相对路径。例如,如果您的应用程序需要音频或图像文件,则可以使用此参数将其包含在可执行文件中。
- a.zipfiles, 注:压缩文件列表,表示应该从zip文件中提取哪些文件并将它们放入输出目录。这对于打包一些必需的库或数据文件非常有用。
- a.datas, 注:数据文件列表,这些文件不应被压缩,但应该被复制到输出目录中。例如,这可能包括配置文件、模板文件或其他类型的文本文件。
- strip=False, 注:是否从可执行文件和库中去除调试信息。默认情况下为True,这将减小文件大小,但会使得调试更加困难。
- upx=True, 注:是否使用UPX来压缩可执行文件和库。默认情况下为False,因为UPX可能会导致某些文件无法正常工作。
- upx_exclude=[], 注:
- name='myapp', 注:打包文件夹名称。
- )
(3)通常我们只需要配置需要打包的模块+pathex+生成exe文件的名称+exe存在目录的名称,配置完后直接在终端输入指令进行打包。
- pyinstaller myapp.spec
(4)打包完成后在项目所在目录下可以看下dist文件,dist文件下一目录就是打包文件夹,文件夹下面就是所在的程序。这里需要注意的是,因为我们打包的是文件夹,因此发给别人使用的时候,因把整个文件夹发过去,才能正确运行。
(5)配置要打包的模块,若模块之间存在import连接,可直接打包最终(main)运行的那个模块即可,pyinstaller会默认把main涉及的impor(.py+第三方库)全部一起打包。若两个py模块相互没有任何关联,这个时候可以打包多个。
2.配置生成独立的exe文件
(1)这里和上面步骤一样,先生成模板
- pyinstaller -F main.py
(2)模板大概样式如下,字段意思和上面一致。
- # -*- mode: python ; coding: utf-8 -*-
- block_cipher = None
- a = Analysis(
- ['main.py'],
- pathex=[],
- binaries=[],
- datas=[],
- hiddenimports=[],
- hookspath=[],
- hooksconfig={},
- 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,
- a.binaries,
- a.zipfiles,
- a.datas,
- [],
- name='hello',
- debug=False,
- bootloader_ignore_signals=False,
- strip=False,
- upx=True,
- upx_exclude=[],
- runtime_tmpdir=None,
- console=True,
- disable_windowed_traceback=False,
- argv_emulation=False,
- target_arch=None,
- codesign_identity=None,
- entitlements_file=None,
- )
(3)配置完成后终端运行指令打包,打包完成后会看见dist目录下只有一个exe文件。
- pyinstaller myapp.spec
三.除了配置spec文件,还可以直接通过pyinstaller指令来直接打包,这里就不做多介绍了。
python pyinstaller库的更多相关文章
- python PyInstaller 库
https://www.cnblogs.com/gopythoner/p/6337543.html https://www.cnblogs.com/duan-qs/p/6548875.html htt ...
- Python使用WMI模块获取Windows系统的硬件信息,并使用pyinstaller库编译打包成exe的可执行文件
由于公司现阶段大多数应用软件都是基于Windows系统开发和部署,很多软件安装部署都是在windows server 2012.windows server 2008之类的服务器上,部门同事每次测试一 ...
- python常用库
本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:vinta.欢迎加入翻译组. Awesome Python ,这又是一个 Awesome XXX 系列的资源整理,由 ...
- Python常用库大全
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...
- python的库小全
环境管理 管理 Python 版本和环境的工具 p – 非常简单的交互式 python 版本管理工具. pyenv – 简单的 Python 版本管理工具. Vex – 可以在虚拟环境中执行命令. v ...
- python 三方库
---------------- 这又是一个 Awesome XXX 系列的资源整理,由 vinta 发起和维护.内容包括:Web框架.网络爬虫.网络内容提取.模板引擎.数据库.数据可视化.图片处理. ...
- python第三方库,你要的这里都有
Python的第三方库多的超出我的想象. python 第三方模块 转 https://github.com/masterpy/zwpy_lst Chardet,字符编码探测器,可以自动检测文本. ...
- python第三方库自动安装脚本
#python第三方库自动安装脚本,需要在cmd中运行此脚本#BatchInstall.pyimport oslibs = {"numpy","matplotlib&qu ...
- Python常用库大全,看看有没有你需要的
作者:史豹链接:https://www.zhihu.com/question/20501628/answer/223340838来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...
- python pyinstaller 打包程序报错解决
python打包exe,各种入坑 一.安装PyInstaller 1.安装pywin32 pip命令安装:pip install pywin32(推荐) 2.安装Pyinstaller pip命令安装 ...
随机推荐
- Pytorch 感知机
单层感知机 \[\begin{aligned} & y = XW + b \\ & y = \sum x_i*w_i+b\\ \end{aligned} \] Derivative \ ...
- 007使用IDEA开发
007使用IDEA开发 1.什么叫IDE? 集成开发环境(IDE,Integrated Development Environment)是用于提供程序开发环境的应用程序,一般包括代码编辑器.编译器.调 ...
- redis为什么是单核单线程
1)以前一直有个误区,以为:高性能服务器 一定是多线程来实现的 原因很简单因为误区二导致的:多线程 一定比 单线程 效率高,其实不然! 在说这个事前希望大家都能对 CPU . 内存 . 硬盘的速度都有 ...
- Leecode 88.合并两个有序数组
想法: 1:先把nums2中的所有元素都放到nums1,之后给合并后的数组排序 1 官方代码: 2 class Solution { 3 public void merge(int[] nums1 ...
- ubuntu添加了id_rsa.pub*authorized_keys依然不能免密登录?
cd .ssh chmod 600 authorized_keys 还是不行,看日志 tail -f /var/log/auth.log bad ownership or modes for dire ...
- mysql查询增加自增列
mysql> SELECT a.user, @i:=@i+1 as id FROM user a,(SELECT @i:=0) b; +------------------+------+| u ...
- 【BUUCTF】ACTF2020 新生赛Include1 write up
查看源代码+抓包都没有发现什么信息,只有这两个东东 <meta charset="utf8"> Can you find out the flag? <meta ...
- 【学习】蓝牙的一些基础知识or什么是蓝牙
蓝牙----Bluetooth(短距离无线通信技术) 2022-07-29 14:31:27 蓝牙技术有什么特点(体积小,易集成,低功耗,适用广,抗干扰,成本低,开放性) (1) 蓝牙模块体积很 ...
- PHP 数据库操作
连接数据库 连接数据库常用的函数 mysqli_connect(主机IP,用户名,密码,数据库名,端口号) // 端口号如果是3306可以省略 mysqli_connect_error():获取连接数 ...
- BOW/DOM(上)
BOM 原生对象:成为js中的内置对象,就是由 js 中的构造函数创建的对象就被称为原生对象:Object.Number.Array.Date.String.... 宿主对象:web运行环境,也就是w ...