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)是统计模型中的一颗璀璨之星,它为数据提供了一种复杂而又强大的表示方法。在机器学习的许多…

并查集|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开发框架,它由多个模…

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…

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

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

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…

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

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

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

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

开启Safari手势支持

在使用Safari 的时候,大家有没有觉得不支持手势使用起来不是很方便, 触摸板只支持少量简单的手势,如缩放,滚动等。如果使用鼠标的用户,则完全无法使用手势。经过折腾研究,使用CirMenu应用可以完美解决这个要…

C++第十一弹---类与对象(八)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】 目录 1、友元 1.1、友元函数 1.2、友元类 2、内部类 3、匿名对象 4、拷贝对象时的一些编译器优化 总结 1、友元 友元提供了一种突破封装的方式&a…

深度解析:Elasticsearch写入请求处理流程

版本 Elasticsearch 8.x 原文链接:https://mp.weixin.qq.com/s/hZ_ZOLFUoRuWyqp47hqCgQ 今天来看下 Elasticsearch 中的写入流程。 不想看过程可以直接跳转文章末尾查看总结部分。最后附上个人理解的一个图。 从我们发出写入请求,到 Elasticsearch 接收请…

单目深度估计基础理论和论文学习总结

单目深度估计基础理论和论文学习总结 一、背景知识: 三维刚体运动的数学表示:旋转平移矩阵、旋转向量、欧拉角、四元数、轴角模型、齐次坐标、各种变换等 照相机模型:单目/双目模型,单目中的世界坐标系/相机坐标系/图像坐标系的…

从零开始的 dbt 入门教程 (dbt cloud 自动化篇)

一、引 在前面的几篇文章中,我们从 dbt core 聊到了 dbt 项目工程化,我相信前几篇文章足够各位数据开发师从零快速入门 dbt 开发,那么到现在我们更迫切需要解决的是如何让数据更新做到定时化,毕竟作为开发我们肯定没有经历每天定…

【项目管理后台】Vue3+Ts+Sass实战框架搭建二

Vue3TsSass搭建 git cz的配置mock 数据配置viteMockServe 建立mock/user.ts文件夹测试一下mock是否配置成功 axios二次封装解决env报错问题,ImportMeta”上不存在属性“env” 统一管理相关接口新建api/index.js 路由的配置建立router/index.ts将路由进行集中封装&am…

GA遗传算法和ALNS算法的区别(我的APS项目七)

博主用最简单的方式告诉你遗传算法是什么,估计这是网上最简单的遗传算法入门教程了。首先我们先带入一个问题,我们要去9大城市旅游,想知道每个城市走一遍,总路程最短的出行顺序是什么? OK,题目我们已经明确…

Chrome 插件打包发布

插件打包发布 一、打包成 zip 包 最简单方便的一种其实就是打包成 zip 包,通过下载链接进行下载,在包里面通过设置版本号和数据库的版本号对比来提醒用户进行新包的下载。 二、发布到 Chrome 应用商店 1. 注册成为开发者 在发布到 chrome 应用商店之…