使用pyinstaller将python代码打包成exe文件

首先使用pyinstaller生成spec文件,然后配置spec文件重新打包

pyinstaller -D app.py

pyinstaller参数

-F :打包单个文件

-D :打包多个文件,在dist中生成很多依赖文件

-c:使用控制台执行,只对windows有效

-n : 生成spec文件的名字和exe名字

-p : 设置导入路径

-key : 用于加密python字节码的密钥

--add-data  可以将一些非二进制文件添加到exe打包

--dispath  :指定打包后程序的存放目录

--workpath  :输出所有临时文件存放目录,默认存放在build目录

# -*- mode: python ; coding: utf-8 -*-block_cipher=None
py_files=['game.py'] #所有的python脚本文件
add_files=[
('resources\\fonts\\MONACO.TTF','resources\\fonts'),
('resources\\images\\game_over.gif','resources\\images')
]a = Analysis(py_files, #此列表存放项目设计所有python脚本文件pathex=['E:\Desktop\Games-master\Tetris'],#此列表为项目绝对路径binaries=[],datas=add_files,  #此列表存放所有资源文件,每个文件都是一个二元组元素hiddenimports=[],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],cipher=block_cipher,noarchive=False,)
pyz = PYZ(a.pure)exe = EXE(pyz,a.scripts,[],exclude_binaries=True,name='game',debug=False,bootloader_ignore_signals=False,strip=False,upx=True,console=True,disable_windowed_traceback=False,argv_emulation=False,target_arch=None,codesign_identity=None,entitlements_file=None,
)
coll = COLLECT(exe,a.binaries,a.datas,strip=False,upx=True,upx_exclude=[],name='game',
)

spec配置说明

a: Analysis类的实例,传入各种脚本来分析程序的导入和依赖。a中的内容包括四部分:scripts,python脚本;pure,程序代码文件中的纯Python模块;binaries,程序代码文件中需要的非python模块;datas,非二进制文件

pyz:  包含所有的python模块

exe:用来生成最后的exe可执行程序

coll:  COLLECT类的实例,用于创建输出目录。-F模式下,没有COLLECT,所有的脚本、模块

二进制文件都包含在最终生成的exe文件中

block_cipher: 加密密钥

Analysis参数说明:

  1. scripts:一个包含要打包的 Python 脚本文件路径的列表。这些脚本文件将被分析并打包到最终的可执行文件中。
  2. pathex:一个包含要搜索脚本文件的路径列表。PyInstaller 将在这些路径中查找脚本文件及其依赖项。
  3. binaries:一个包含要包含在可执行文件中的二进制文件路径的列表。这些二进制文件可以是共享库、插件或其他依赖项。
  4. datas:一个包含要包含在可执行文件中的非 Python 文件路径的列表。这些文件可以是数据文件、配置文件或其他资源文件。
  5. hiddenimports:一个包含要隐式导入的模块名列表。这些模块可能不会被 PyInstaller 自动检测到,但它们对于程序的正常运行可能是必需的。
  6. hookspath:一个包含自定义钩子脚本路径的列表。钩子脚本用于处理特定的包或模块,以便正确地打包它们。
  7. runtime_hooks:一个包含运行时钩子路径的列表。运行时钩子用于在程序运行时执行特定的操作,例如加载插件或初始化资源。
  8. excludes:一个包含要从打包过程中排除的模块名列表。这些模块将不会被包含在最终的可执行文件中。
  9. win_no_prefer_redirects:一个布尔值,指示是否避免使用 Windows 文件重定向。如果设置为 True,则 PyInstaller 将尝试直接访问文件而不是通过重定向来访问它们。
  10. win_private_assemblies:一个布尔值,指示是否将程序集作为私有副本包含在可执行文件中。如果设置为 True,则每个可执行文件都将包含其依赖项的一个私有副本,以避免与其他程序的冲突。
  11. cipher:一个用于加密 Python 字节码的密钥。如果提供了密钥,则 PyInstaller 将使用它来加密打包的 Python 脚本,以增加安全性。
  12. noarchive:一个布尔值,指示是否将 Python 字节码嵌入到可执行文件中。如果设置为 False,则 PyInstaller 将创建一个单独的存档文件来存储字节码,并在运行时加载它。这可以减少可执行文件的大小,但会增加启动时间。

参考:

pyinstaller系列之七:打包各种问题汇总_pyinstaller hidden import not found-CSDN博客

【python第三方库】pyinstaller使用教程及spec资源文件介绍_--hidden-import-CSDN博客

Pyinstaller的Spec文件用法_pyinstaller spec-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/222705.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring 笔记五 SpringMVC的数据响应

文章目录 SpringMVC的数据响应SpringMVC的数据响应方式回写数据 SpringMVC的数据响应 SpringMVC的数据响应方式 页面跳转 直接返回字符串通过ModelAndView对象返回 回写数据 直接返回字符串返回对象或集合 返回字符串形式 直接返回字符串:此种方式会将返回的字符…

腾讯云Elasticsearch Service产品体验

基本介绍 产品概述 腾讯云 Elasticsearch Service(ES)是云端全托管海量数据检索分析服务,拥有高性能自研内核,集成X-Pack。ES 支持通过自治索引、存算分离、集群巡检等特性轻松管理集群,也支持免运维、自动弹性、按需…

Clickhouse RoaringBitmap

https://blog.csdn.net/penriver/article/details/119736050 https://juejin.cn/post/7179956435806076988 BitMap适合连续密集的正整数存储,对于稀疏的正整数存储,其性能在很多时候是没办法和int数组相比的,尤其是正整数跨度较大的场景&…

架构设计系列之常见架构(一)

本部分对常见架构进行简单的说明。 一、三层架构之经典 MVC 经典的 MVC 架构(Model-View-Controller)架构是软件系统架构设计中的经典,它将应用程序分为三个主要部分: 模型(Model)视图(View&…

​xml.dom --- 文档对象模型 API​

源代码: Lib/xml/dom/__init__.py 文档对象模型“DOM”是一个来自万维网联盟(W3C)的跨语言 API,用于访问和修改 XML 文档。 DOM 的实现将 XML 文档以树结构表示,或者允许客户端代码从头构建这样的结构。 然后它会通过一组提供通用…

智能优化算法应用:基于差分进化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于差分进化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于差分进化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.差分进化算法4.实验参数设定5.算法结果6.…

DC-3靶场

DC-3 DC-3靶场链接:https://download.vulnhub.com/dc/DC-3-2.zip 下载后解压会有一个DC-3.ova文件,直接在vm虚拟机点击左上角打开-->文件--.选中这个.ova文件就能创建靶场,kali和靶机都调整至NAT模式 首先进行主机发现: arp…

celery/schedules.py源码精读

BaseSchedule类 基础调度类,它定义了一些调度任务的基本属性和方法。以下是该类的主要部分的解释: __init__(self, nowfun: Callable | None None, app: Celery | None None):初始化方法,接受两个可选参数,nowfun表…

基于java的医院住院管理系统的设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对医院住院信息管理混乱,出错率高,信息安全性差…

Java中使用EasyExcel写excel文件

1、公式 package com.web.report.handler;import com.alibaba.excel.context.WriteContext; import com.alibaba.excel.metadata.csv.CsvCellStyle; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.CellWriteHandler; import…

Vue学习笔记-Vue3中的customRef

作用 创建一个自定义的ref&#xff0c;并对其依赖项的更新和触发进行显式控制 案例 描述&#xff1a;向输入框中输入内容&#xff0c;在下方延迟1秒展示输入内容 代码&#xff1a; <template><input type"text" v-model"keyword"><h3&…

从零开发短视频电商 用Java框架部署模型并推理 - Deep Java Library (DJL)

文章目录 支持引擎模型库示例一 基础模型 图片分类示例二 huggingface模型库 文本嵌入获取Tokenization标记(tokens)的数量官网: https://djl.ai/ 动手学深度学习-中文:https://d2l-zh.djl.ai/ 支持模型 PyTorch TorchScript modelTensorFlow SavedModel bundleApache MXNe…

Spring 使用 MongoDB 时的数据类型转换器

官方文档&#xff1a;自定义类型转换器 是时间戳为例的代码&#xff1a; TimestampReadConverter.java import org.bson.BsonTimestamp; import org.springframework.core.convert.converter.Converter;import java.time.Instant; import java.util.Date;/* * Java类型与 Mo…

网络安全项目实战(四)--报文检测

8. TCP/UDP 段 目标 了解 TCP 段头的组织结构了解 UDP 段头的组织结构掌握 TCP/UDP 段的解析方式 8.1. UDP 段格式 下图是UDP的段格式&#xff08;该图出自[TCPIP]&#xff09;。 8.2. UDP头部 //UDP头部&#xff0c;总长度8字节// /usr/include/linux/udp.h struct udphdr …

uniapp提交带有弹出确认和取消按钮方法提交接口

目录 方法1方法2最后 方法1 submitServie(){let self this;if (!self.resultData.item && !self.resultData.subItem) {uni.showToast({title: 请选择服务分类,duration: 1000,icon: none});return false;}uni.showModal({title: 提示,content: 确定提交&#xff1f;…

自定义Axure元件库及原型图泳道图的绘制(详细不同类的案例)

目录 前言 一.自定义元件库 1.1 自定义元件库的作用 1.2 自定义元件的操作 二.流程图 2.1 流程图的作用 2.2 绘制流程图 2.3 简易流程图案例 三.泳道图 3.1 泳道图的作用 3.2 流程图和泳道图的区别 3.3 绘制泳道图 四.绘制前的准备 五.案例 4.1 门诊模块案例 4.2 …

聚观早报 |iOS17.3引入设备被盗保护;iPhone16或调整设计

【聚观365】12月14日消息 iOS17.3引入设备被盗保护 iPhone16或调整设计 马斯克星链网络使用量飙升 华为鸿蒙智行App正式上线 特斯拉人形机器人Optimus二代上线 iOS17.3引入设备被盗保护 苹果向iPhone用户推送了iOS17.3开发者预览版Beta更新&#xff0c;本次更新距离上次发…

Vue2.x源码:new Vue()做了啥

例子1new Vue做了啥?new Vue做了啥,源码解析 initMixin函数 初始化 – 初始化Vue实例的配置initLifecycle函数 – 初始化生命周期钩子函数initEvents – 初始化事件系统初始化渲染 initRender初始化inject选项 例子1 <div id"app"><div class"home&…

docker安装最新版SQL Server并还原备份的数据库

docker安装数据库 拉取微软官方最新版镜像 docker pull mcr.microsoft.com/mssql/server 拉去镜像并创建容器 docker run -e "ACCEPT_EULAY" -e "SA_PASSWORDsa_password_123456" -p 1433:1433 -v /opt/:/opt --name sqlserver -d mcr.microsoft.com/ms…

前端页面显示的时间格式为:2022-03-18T01:46:08.000+00:00 如何转换为:年-月-日,并根据当前时间判断为几天前

由于后端每条博文的发表时间是以“xxxx—xx—xxxx:xx:xx”的形式显示的&#xff0c; 现在要在前端改成“xxxx年xx月xx日”的形式。 并对10分钟内发表的显示“刚刚”&#xff0c;对24小时内发表的显示“小时前”。 超过24小时&#xff0c;小于48小时&#xff0c;显示“1天前”。…