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, Executable

setup(
    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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Jenkins的快速入门

文章目录 一、Jenkins是什么?二、Jenkins安装和持续集成环境配置1.持续集成流程说明2.Gitlab代码托管服务器安装Gitlab简介:Gitlab安装Gitlab的使用切换中文添加组创建用户将用户添加到组创建项目idea中代码上传Gitlab 3.Jenkins持续集成环境服务器安装J…

SiteServer 学习笔记 Day02 添加站点的样式、脚本文件、图片资源

1、今天上传一些CSS、JavaScript、Image等资源文件,方便学习的时候使用。这些资源文件是SSCMS提供的模版文件中的可以到官网上去找,也可以从我上传的资源中下载。 https://download.csdn.net/download/xingchengaiwei/89030060 2、选择显示管理->资…

国产大模型KimiChat起飞了!200万字内测开启,AI助手能力大提升!

会议之眼 快讯 Kimi Chat是北京月之暗面科技有限公司推出的支持输入20万汉字的智能助手产品。其背后的技术是一个体量为千亿参数的大模型。Kimi Chat的推出是月之暗面“登月计划”的一部分,旨在为未来的多模态版本产品提供基础,并最终在大模型领域打造面…

MySQL运维实战之ProxySQL(9.1)ProxySQL介绍

作者:俊达 mysql通过复制技术实现了数据库高层面的可用,但是对于应用来说,当后端MySQL发生高可用切换时,应该怎么处理? 我们考虑几种方案: 1、使用域名绑定。应用通过dns连接后端实例,当后端发…

Bi-LSTM-CRF:其结合了 BI-LSTM 的上下文捕获能力和 CRF 的标签关系建模

Bi-LSTM-CRF:其结合了 BI-LSTM 的上下文捕获能力和 CRF 的标签关系建模 提出背景LSTM网络双向LSTM网络 (BI-LSTM)CRF网络LSTM-CRF网络双向LSTM-CRF网络 (BI-LSTM-CRF) 效果对比结构对比 论文:https://arxiv.org/pdf/1508.01991.pdf 代码:htt…

Tether CEO力挺波场TRON,直言其在一定程度实现了惠普金融

近期,加密媒体Bankless对Tether CEO Paolo Ardoino进行了深度专访。在专访中,Tether CEO Paolo Ardoino详细且深入地向听众们介绍了USDT,并对波场TRON的成就给予了高度认可。他更是直接表示,“我们不应该讨厌波场TRON,更应该换位思考站在其他人的角度考虑,尤其是那些无法负担起…

Hashtable 是如何保证线程安全的?

1、典型回答 Hashtable 保证线程安全主要是通过给关键方法,例如 put 添加方法、remove 删除方法,添加 synchronized 加锁来保证线程安全的。 2、全面剖析 Hashtable 保证线程安全的方法实现非常简单粗暴,就是给关键方法整体添加 synchroni…

力扣HOT100 - 49. 字母异位词分组

解题思路&#xff1a; 排序 注意&#xff1a; 返回时不能用List&#xff0c;因为List是抽象类&#xff0c;return的必须是List的具体实现&#xff0c;如ArrayList class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, Lis…

谈谈我对 AIGC 趋势下软件工程重塑的理解

作者&#xff1a;陈鑫 今天给大家带来的话题是 AIGC 趋势下的软件工程重塑。今天这个话题主要分为以下四大部分。 第一部分是 AI 是否已经成为软件研发的必选项&#xff1b;第二部分是 AI 对于软件研发的挑战及智能化机会&#xff0c;第三部分是企业落地软件研发智能化的策略…

c++之类与对象<二>

目录 前言 一&#xff1a;类的六个成员默认函数 二&#xff1a;构造函数 1.概念 2.特征 3.全缺省调用构造函数 4. 类中无构造函数 三&#xff1a;析构函数 1.概念 2.特征 3.类中无析构函数 四&#xff1a;拷贝构造函数 1.概念 2.特征 3.类中无拷贝构造函数 4.…

“一根盲杖,扫清前进道路”视障人士关爱行动中

近期&#xff0c;红枫林义警服务发展中心联合暨南街道社工站&#xff0c;面向暨南街道辖区内的视障人群&#xff0c;开展了一系列服务&#xff0c;送去了我们的关爱。 首先&#xff0c;我们成功为视障人群链接到了价值1万的爱心物资&#xff0c;捐赠仪式即为本次我们关爱行动的…

Zabbix 配置使用

目录 配置流程 添加组机组 添加模板 添加主机 配置图形 配置大屏 Monitoring 配置地图 最新数据 故障 使用IT服务 使用报表 资产管理 全局搜索 导入导出 用户权限 用户组权限 用户 匿名用户 调试模式 与 LDAP 对接 维护模式 故障确认 批量更新 配置流程…

Stable Diffusion WebUI 生成参数:脚本(Script)——提示词矩阵、从文本框或文件载入提示词、X/Y/Z图表

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 在本篇文章中&#xff0c;我们将深入探讨 Stable Diffusion WebUI 的另一个引人注目的生成参数——脚本&#xff08;S…

Java中的多线程详解(超级简单理解)(上篇)

使用工具 IntelliJ IDEA Community Edition 2023.1.4 使用语言 Java8 代码能力快速提升小方法&#xff0c;看完代码自己敲一遍&#xff0c;十分有用 目录 1.多线程概述 1.1 进程与线程 1.2 多线程的运行机制 1.3 多线程的优势 2.多线程编程 2.1 Thread类介绍 2.2 …

基于Java中的SSM框架实现电能计量与客户服务管理系统项目【项目源码+论文说明】

基于Java中的SSM框架实现电能计量与客户服务管理系统演示 摘要 当前时代的两个突出特征是世界经济一体化和以计算机为代表的信息技术的迅速发展。为了使组织在激烈的竞争中保持实力和发展&#xff0c;它必须对迅速变化的环境做出有效而有效的响应。 管理信息系统的应用可以提供…

Linux系统安装openGauss结合内网穿透实现公网访问本地数据库管理系统——“cpolar内网穿透”

文章目录 前言1. Linux 安装 openGauss2. Linux 安装cpolar3. 创建openGauss主节点端口号公网地址4. 远程连接openGauss5. 固定连接TCP公网地址6. 固定地址连接测试 前言 openGauss是一款开源关系型数据库管理系统&#xff0c;采用木兰宽松许可证v2发行。openGauss内核深度融合…

6SL3126-1TE21-8AA4单电机模块质保一年

商品编号(市售编号) 6SL3126-1TE21-8AA4 SINAMICS S120 单电机模块 输入&#xff1a;600V DC 输出&#xff1a;3AC 400V,18A 结构形式&#xff1a;书本尺寸 冷板冷却 优化的脉冲图形和 支持扩展 安全集成功能 包含 DRIVE-CLiQ 电缆 列表价&#xff08;不含税&#xff09…

查询正在运行的Top SQL的脚本(建议收藏)

这篇文章提供了一些现成的SQL脚本&#xff0c;通过查询V$SQLSTATS视图找到正在运行的TOP SQL&#xff0c;用于后续的优化。建议大家收藏&#xff0c;需要查询TOP SQL时直接复制和粘贴即可。 之前的一篇文章解释了为什么要使用V$SQLSTATS视图。 当数据库表现出各种不同的性能问…

MATLAB环境基于健康指标(Health indicator)的滚动轴承故障诊断

轴承的剩余使用寿命RUL预测过程一般包括以下三个步骤&#xff1a;&#xff08;1&#xff09;数据采集&#xff0c;&#xff08;2&#xff09;健康指标HI构建&#xff0c;&#xff08;3&#xff09;RUL预测。在预测过程中&#xff0c;RUL并不能直接依靠观测得到&#xff0c;其主…

智慧水务:雨季山区水域水务智能化监控与监测管理方案

一、方案背景 雨季的水务管理对于各区县来说&#xff0c;无疑是一项至关重要的任务。夏季雨水充沛&#xff0c;江河湖泊水位上涨&#xff0c;山洪、上游排水等情况时有发生&#xff0c;给各地的水务设施和防汛工作带来了严峻的挑战。针对区县的各类水域监管场景&#xff0c;需…