python程序打包

目录

  • 1. 命令
  • 2. 安装
    • 2.1 PyInstaller
    • 2.2 cx_Freeze(笔者未用过)
  • 3. 打包示例
    • 3.1 在 pycharm 中执行
    • 3.2 若使用打包命令时报错
    • 3.3 路径问题

python打包成可执行文件,用于在没有Python环境的地方运行该程序,与qt打包类似。(笔者写的qt打包地址:https://blog.csdn.net/qq_43700779/article/details/136994534)

1. 命令

pyinstaller --onefile --hidden-import=opencv-python --hidden-import=can --hidden-import=canlib --hidden-import=python-can --hidden-import=can.interfaces.kvaser replay_tool_22D5.py

这行命令是用于使用PyInstaller工具将名为replay_tool_22D5.py的Python脚本打包成一个独立的可执行文件。
具体来说,命令中的各个参数的含义如下:

  • –onefile: 这个参数指示 PyInstaller 将生成一个单一的可执行文件,而不是生成多个文件。
  • –hidden-import=opencv-python: 这个参数指示 PyInstaller 在打包过程中包含 opencv-python 模块,即使它没有在脚本中明确导入。
  • –hidden-import=can, --hidden-import=canlib,–hidden-import=python-can,–hidden-import=can.interfaces.kvaser: 这些参数指示 PyInstaller在打包过程中包含指定的隐藏模块,即使它们没有在脚本中明确导入。
  • replay_tool_22D5.py: 这是要打包的Python脚本的文件名。
    通过这个命令,PyInstaller将会将replay_tool_22D5.py以及指定的隐藏模块打包成一个独立的可执行文件,该文件可以在没有Python解释器的情况下在其他计算机上运行。

2. 安装

对于包含多个 .py 文件的 Python 工程,可以使用 PyInstaller 或 cx_Freeze 等工具来打包成一个可执行文件。

2.1 PyInstaller

使用 PyInstaller 打包包含多个 .py 文件的 Python 工程的步骤:
1.安装PyInstaller:在命令行中执行 pip install pyinstaller 来安装 PyInstaller。
2.运行PyInstaller:在命令行中进入Python工程的根目录,然后执行 pyinstaller --onefile your_main_script.py,其中
your_main_script.py 是主要 Python 脚本文件。PyInstaller 将会自动检测并包含主要脚本文件所依赖的其他 .py 文件。

2.2 cx_Freeze(笔者未用过)

使用 cx_Freeze 打包包含多个.py文件的Python工程的步骤:
1.安装cx_Freeze:在命令行中执行 pip install cx_Freeze 来安装 cx_Freeze。
2.创建setup.py文件:在Python工程的根目录中创建一个名为 setup.py 的文件,内容类似如下:

from cx_Freeze import setup, Executablesetup(name="YourProgram",version="1.0",description="Description of your program",executables=[Executable("your_main_script.py")]
)

其中 your_main_script.py 是主要 Python 脚本文件。
注:如果系统中有多个 Python 版本(比如Python 2和Python 3),确保使用正确的 pip 命令来安装 PyInstaller。例如:Python 3,应该使用 pip3 install pyinstaller 命令来安装 PyInstaller。
3.运行cx_Freeze:在命令行中进入 Python 工程的根目录,然后执行 python setup.py build。这将会使用 cx_Freeze 创建一个包含所有依赖的可执行文件。
无论选择使用 PyInstaller 还是 cx_Freeze,都应该能够将包含多个.py文件的Python工程打包成一个可执行文件。

3. 打包示例

3.1 在 pycharm 中执行

在这里插入图片描述
在这里插入图片描述
这个 .spec 文件是该程序的很多依赖文件或者库,第一次打包后就会有这个文件的存在
在这里插入图片描述
可修改该 .spec 文件来包含指定文件或库

# -*- mode: python ; coding: utf-8 -*-a = Analysis(['aragen'],pathex=[],binaries=[],datas=[('./generator/parser/schema', './generator/parser/schema'),('./generator/templates', './generator/templates')],hiddenimports=['generator.generator.lib_binding.vsomeip_binding', 'generator.generator.lib_binding.fastdds_binding', 'generator.generator.lib_binding.iceoryx_binding'],hookspath=[],hooksconfig={},runtime_hooks=[],excludes=[],noarchive=False,
)
pyz = PYZ(a.pure)exe = EXE(pyz,a.scripts,a.binaries,a.datas,[],name='aragen',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.2 若使用打包命令时报错

不报错当然你好我好大家好,有报错就解决报错即可,
这多半是由于使用路径不对造成的,pycharm 并没有找到 pyinstaller 的存在(即便你是安装了pyinstaller):
在这里插入图片描述

3.3 路径问题

解决方法一
带上完整的 pyinstaller 路径即可
在这里插入图片描述

该路径是怎么找到的?
在右下角的当前使用的 python 解释器的位置找到的,
在这里插入图片描述
点击查看当前解释器的设置:
在这里插入图片描述
在这里插入图片描述

顺着路径在文件系统中找,Scripts 文件下就有该插件:
在这里插入图片描述
在这里插入图片描述

解决方法二
切换目录路径到 pyinstaller.exe 存在的目录
在这里插入图片描述

打包后的文件也会在当前路径下

在这里插入图片描述
月落乌啼霜满天,江枫渔火对愁眠。
2024年3月24日21:03:26

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

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

相关文章

鸿蒙实战开发:【7日天气预报】

先来看一下效果 本项目界面搭建基于ArkUI中TS扩展的声明式开发范式, 数据接口是[和风(天气预报)], 使用ArkUI自带的网络请求调用接口。 我想要实现的一个功能是,查询当前城市的实时天气, 目前已实现的功…

聚类算法之高斯混合模型聚类 (Gaussian Mixture Model, GMM)

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 高斯混合模型(GMM)是统计模型中的一颗璀璨之星,它为数据提供了一种复杂而又强大的表示方法。在机器学习的许多…

9. Linux 信号详解

Hi, 大家好! 本篇开始讲解Linux中信号的基本知识。 一、信号基本概念 信号是事件发生时对进程的通知机制,也可以把它称为软件中断。信号与硬件中断的相似之处在于能够打断程序当前执行的正常流程, 其实是在软件层次上对中断机制的一种模拟。 信号编号: 每个信号都有一个唯一…

美易官方:“巴菲特指标”创两年新高,拉响股市泡沫警报

近年来,随着全球经济的不断发展和资本市场的日益成熟,股市成为了越来越多人关注和投资的领域。然而,股市波动的不确定性也让许多投资者倍感焦虑。最近,“巴菲特指标”创两年新高,引发了市场对于股市泡沫的担忧。 “巴菲…

高性能计算——指令表

指令表 文章目录 指令表吞吐量计算示例一般情况在数字电子学中,执行阶段的交错是一个通用概念,不仅应用于主CPU流水线,还应用于独立指令和内存的层面。大多数执行单元都有自己的小流水线,可以在前一个指令之后一到两个周期内接收另一个指令。 在这种情况下,使用两种不同的…

并查集|1971. 寻找图中是否存在路径、684.冗余连接、685.冗余连接II

目录 并查集基础 1971. 寻找图中是否存在路径 684.冗余连接 685.冗余连接II 并查集基础 并查集主要有三个功能。 寻找根节点,函数:find(int u),也就是判断这个节点的祖先节点是哪个将两个节点接入到同一个集合,函数&#xf…

【深度学习】一文搞懂 如何计算图像数据集的RGB均值和方差(超详细的哦~)

计算图像数据集的RGB均值和方差 1、引言2、RGB均值和方差2.1 计算RGB均值和方差原因2.2 计算RGB均值和方差步骤2.3 代码实现2.3.1 TensorFlow计算RGB均值和方差2.3.2 PyTorch计算RGB均值和方差 3、总结 1、引言 小屌丝:鱼哥,帮个忙呀 小鱼:在…

了解Spring:Java开发的利器

Spring是一款开源的轻量级Java开发框架,旨在提高开发人员的效率和系统的可维护性。本文将介绍Spring的基本概念、使用优势、设计模式以及与Spring MVC和Spring Boot的关联。 什么是Spring? Spring是一款开源的轻量级Java开发框架,它由多个模…

Flink中流式的各种聚合

11.1 MiniBatch 聚合 针对无界聚合算子,说简单点就是把一组输入的数据放到缓存里,减少吞吐的开销 默认情况下,对于无界聚合算子来说,mini-batch 优化是被禁用的。开启这项优化,需要设置选项 TableConfig configurat…

STM32之HAL开发——HAL库框架介绍

HAL库外设设计思想 HAL库借鉴面向对象的设计思想,将外设驱动封装为对象。 HAL库使用主线 HAL使用的主要用在俩个地方,无外乎外设初始化以及外设的使用。想用好这两个功能,我们首先得对外设的封装有一定的了解。 句柄结构体 xx_HandleTypeDef…

【吾爱破解】Android初级题(二)的解题思路 _

拿到apk,我们模拟器打开看一下 好好,抽卡模拟器是吧😀 jadx反编译看一下源码 找到生成flag的地方,大概逻辑就是 java signatureArr getPackageManager().getPackageInfo(getPackageName(), 64).signaturesfor (int i 0; i &l…

数据结构(C语言)代码实现(十一)——离散事件模拟

目录 参考资料 代码实现 有序链表头文件LinkList.h 链队列LinkQueue.h 银行业务模拟程序头文件 Bank_Simulation.h 具体函数实现以及主函数 实验中遇到的问题 参考资料 1、数据结构严蔚敏版 2、大佬已有的成套的作业。基本思路照搬大佬和课本,不过自己这些代…

Spring MVC面试简答题

简答题 简述Spring MVC的设计原理和主要组成部分。解答: Spring MVC的设计原理基于MVC(Model-View-Controller)设计模式,它将应用程序划分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。 Model:代表应用程序的数据和业务逻辑。View:负责渲染用户界…

批量高效剪辑视频,轻松调整视频时长,轻松打造完美节奏

在数字化时代,视频内容已成为我们生活中不可或缺的一部分。无论是社交媒体上的短视频,还是专业影视制作中的长片,视频剪辑都扮演着至关重要的角色。然而,面对大量视频素材,如何高效地进行剪辑调整,让每一帧…

Express:快速搭建Node.js应用的基石

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

华为OD机试 - 打印任务排序 - 队列(Java 2024 C卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2024C卷题库疯狂收录中,刷题点这里 专栏导读 本专栏收录于《华为OD机试(JAVA)真题&a…

Rust 的 Vec 排序方法汇总

在 Rust 中,Vec 类型的排序可以通过使用 sort 方法来实现。sort 方法是 Vec 的一个成员方法,它会对向量中的元素进行就地排序(即不返回新的排序后的向量,而是直接修改原始向量)。此外,sort_by 和 sort_by_k…

机器人|逆运动学问题解决方法总结

如是我闻: 解决逆运动学(Inverse Kinematics, IK)问题的方法多样,各有特点。以下是一个综合概述: 1. 解析法(Analytical Solutions) 特点:直接使用数学公式计算关节角度&#xff0…

0基础 三个月掌握C语言(14)-上

自定义类型 其实C语言有内置类型 也有自定义的类型 内置类型(C语言本身支持的现成的类型) 如:char short int long float double.... 但仅仅有这些类型是不够的 比如说 我们想表示一个人(复杂对象) 对于人的描述那…

我们是如何测试人工智能的(八)包含大模型的企业级智能客服系统拆解与测试方法 -- 大模型 RAG

大模型的缺陷 -- 幻觉 接触过 GPT 这样的大模型产品的同学应该都知道大模型的强大之处, 很多人都应该调戏过 GPT,跟 GPT 聊很多的天。 作为一个面向大众的对话机器人,GPT 明显是鹤立鸡群,在世界范围内还没有看到有能跟 GPT 扳手腕…