【python】使用pyinstaller将程序打包为exe文件

2023-05-16

前言:如何将python的.py文件打包为exe文件,以打包单独文件的简单程序和打包基于pygame库编写的多模块程序为例,以及如何处理素材文件使打包后的文件可以正常运行,还有一些总结(仅个人见解)

目录

原生编译器打包程序:

展示文件信息

1.安装pyinstaller

2控制台切换到对应路径(路径必须全英文)

3.打包程序(多文件与单文件)

pyCharm打包程序:

(通过pycharm用pyinstall打包多模块文件,以打包一个pygame写出的游戏为例子)

展示文件信息

1.在terminal-Command prompt下安装pyinstaller

2.导出依赖信息,确保虚拟环境(venv)存在需要的库

3.本地指令行输入安装指令打包为(多文件&单文件)

补充说明:

关于报错:

关于多文件与单文件

多文件形式:

单文件形式:


原生编译器打包程序:

展示文件信息

 

 

1.安装pyinstaller

Win+R,输入cmd打开运行控制台,输入

pip install pyinstaller

2控制台切换到对应路径(路径必须全英文)

cd + 路径(非c盘使用cd/d 盘:\路径)

3.打包程序(多文件与单文件)

输入pyinstaller,会提示你指令说明

打包为多文件:

Pyinstaller –D 主程序名.py

(最后显示successfully说明打包成功) 

 (蓝线标识的文件夹是打包的配置文件,下次打包时需要删除这两个文件,dist是打包好的程序)

打包为单文件:

Pyinstaller –F 主程序名.py

打包好的程序放在当前文件夹dist内

 

pyCharm打包程序:

(通过pycharm用pyinstall打包多模块文件,以打包一个pygame写出的游戏为例子)

展示文件信息

1.在terminal-Command prompt下安装pyinstaller

2.导出依赖信息,确保虚拟环境(venv)存在需要的库

关于解决外部导入的库的问题,只要对应的虚拟环境内存在需要的库,就可以导出;

pycharm可以将对应导入的库放到同级目录venv文件夹内,即虚拟环境,在本地模式下可以打包程序不用单独指定路径,我们可以单独导出需要的环境依赖为文本,

在本地模式下

pip freeze > reqirements.txt

然后在需要的虚拟环境下再安装环境依赖(用于不同系统)

pip install -r reqirements.txt

确保当前虚拟环境下有对应的依赖后就可以打包程序了

3.本地指令行输入安装指令打包为(多文件&单文件)

输入pyinstaller,会提示你指令说明

打包为多文件(在terminal  >  Command prompt窗口输入指令):

pyinstaller –D 主程序名.py

 

 (successfully显示打包成功)

打包后的文件不包含素材,此时运行会闪退,需要将素材拖到同级文件夹下

 导入素材以后就可以直接运行exe了

打包为单文件同上:pyinstaller –F 主程序名.py

(无论单文件还是多文件打包,都无法把素材文件打包到exe内,所以仍然需要将素材放到同级文件夹内)

补充说明:

如果用pycharm打包简单程序同原生编译器,在terminal-Command prompt窗口下输入控制台指令,安装到当前venv环境内就可以导出了

我们的程序往往不仅仅由一个文件构成,可能会包含一些依赖与素材文件,可能是图片或者音频等,我们主要关注的是主程序的代码中是否调用了这些对应的模块,或者主程序调用的模块是否调用了其他的模块,只要在主程序中调用了的模块在打包的时候会一并导入exe文件,但是如果你创建了一个模块,但是没有在主程序中被调用或者在其他模块中被调用,那么这个模块是不会导入exe文件中的。

关于素材文件,音频以及图片素材调用自外部时无法把程序封装到exe文件里,所以无论是打包为多文件还是单文件都需要把程序的素材放到同级文件夹内,这个时候你就会发现exe文件可以正确运行了

关于报错:

如果程序本身存在问题,那么打包后的程序会在打开后遇到错误时直接退出

退出的原因可能有(目前笔者我遇到的):

1.本身程序就存在问题,打包前没有解决

2.对应素材或者环境缺失

可能还会有各种各样的原因,这两项只是我自己遇到的,关于更多细节可以去官网查看pyinstaller的说明

(http://www.pyinstaller.org/)

关于多文件与单文件

多文件形式:

程序打包后保存为包含依赖等其他文件的多个文件,用打包时指定的.py命名的exe文件启动程序,当程序运行时,程序产生的临时文件以及运行的路径会在当前文件夹而不会使用临时文件夹

单文件形式:

程序打包后保存为单个打包时指定的.py命名的exe文件,当程序运行时,程序产生的临时文件会使用临时文件夹存放临时文件以及解包其他文件并以临时文件夹为指定路径

(个人见解,可能描述与说明不是很准确,如果出现错误希望广大读者们可以指正)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【python】使用pyinstaller将程序打包为exe文件 的相关文章

  • 【实验七】Linux生产者消费者问题(线程)

    目录 一 问题介绍 二 代码 1 prod cons cpp 2 producer h 3 producer cpp 4 consumer h 5 consumer cpp 6 mq h 7 mq cpp 8 message h 9 mes
  • HTTP-响应数据格式及常见地状态响应码(403,404,405)

    HTTP 响应数据格式 响应数据分为3部分 1 响应行 响应数据的第一行 其中HTTP 1 1表示协议版本 xff0c 200表示响应状态码 xff0c OK表示状态码描述 2 响应头 第二行开始 xff0c 格式为键值对的形式 3 响应体
  • 【Linux】TigerVNC安装指导

    1 以单一用户远程访问桌面 1 1 服务端中启用桌面共享 在统信服务器操作系统V20 1020a 上配置为启用单一客户端的远程桌面连接 1 2 配置远程桌面服务端 1 配置防火墙规则来启用对服务端的VNC访问或关闭防火墙 xff1a fir
  • 使用console.log输出特殊字符图案或自定义图片

    最近看到一篇比较有趣的文章 程序员的浪漫 console log 在浏览器控制台输出特殊字符编码的图案 想自己动手试一试 xff0c 很明显我做的效果不好 xff0c 弄了很久还是没弄出来 下面介绍另外一种方法 xff0c 方法来自 使用c
  • IDEA中添加了vue.js插件后setting就打不开;添加vue.js报错Requires plugin ‘intellij.webpack‘ to be installed

    IDEA版本要和vue js版本对应 查看IDEA版本 xff0c help about 然后再去官网查找和自己IDEA版本对应的vue js Versions Vue js IntelliJ IDEs Plugin Marketplace
  • yml配置文件简单语法及小坑

    yml文件使用方法 1 语法 K 空格 V 表示一对键值对 xff0c 以空格缩进来控制层级关系 xff0c 只要左对齐的一列数据 xff0c 都是一个层级的 属性和值是大小写敏感 2 写法 普通值 字符串默认不加单引号或者双引号 xff1
  • 抽象工厂模式

    工厂模式 工厂方法模式 xff08 Fatory Method Pattern xff09 提供一个接口 xff0c 一个可创建一系列相关对象的 无需指定他们的具体类 一个抽象工厂类 xff0c 不同的具体工厂产生不同的对象实体 eg 冰箱
  • docker简介--01

    官方文档 xff1a https docs docker com engine reference commandline docker 官方仓库 xff1a https hub docker com docker基本组成 image 镜像
  • docker网络配置和名称空间管理

    docker容器虚拟化 虚拟化网络 Network Namespace 是 Linux 内核提供的功能 xff0c 是实现网络虚拟化的重要功能 xff0c 它能创建多个隔离的网络空间 xff0c 它们有独自网络栈信息 不管是虚拟机还是容器
  • CentOS系统下安装docker简易步骤

    docker 官网地址 https www docker com docker 开发文档 https docs docker com manuals 手册 gt install gt Linux xff08 centos xff09 环境为
  • linux环境安装jdk

    linux环境安装jdk 1 查看本环境下是否java环境 java version 不存在 已存在 2 如果不存在 xff0c 先去下载jdk 到官网下载jdk 注 xff1a 一定要根据具体的linux系统按需下载对应的安装包 我的是l
  • linux环境下安装tomcat

    配置tomcat 到官网下载tar包 将tar包上传到服务器 并解压 span class token function tar span zxvf apache tomcat 9 0 65 tar gz 重命名tomcat9 span c
  • docker基础命令以及常用命令

    docker 基本命令 1 其他命令 span class token comment 查看版本 span docker version span class token comment 查看信息 span docker info span
  • Redis基础数据结构及其使用

    Redis 一 xff0c docker方式安装redis span class token comment 拉取 redis 镜像 span span class token operator gt span span class tok
  • 设计模式之--原型模式

    原型模式 原型实例指定创建对象的种类 xff0c 并且通过复制这些原型创建新对象 使用场景 xff1a 类初始化消耗资源比较多 使用new生成一个对象需要非常繁琐的过程 构造函数比较复杂 在循环体中产生大量对象 浅克隆 浅克隆只是完整复制了
  • redis分布式锁使用方式

    为什么使用锁 xff1f 锁的作用是要解决多线程对共享资源的访问而产生的线程安全问题 当多个线程并发操作某个对象时 xff0c 可以通过synchronized来保证同一时刻只能有一个线程获取到对象锁进而处理synchronized关键字修
  • Redis的延时队列

    延时队列 redis的list数据结构用来做一部消息队列 xff0c 使用rpush lpush操作入队列 使用lpop rpop来出队列 span class token operator gt span rpush notify que
  • 设计模式---代理模式

    代理模式 proxy pattern 定义 xff1a 指为其他对象提供一种代理 xff0c 以控制对这个对象的访问 代理对象在客户端和目标对象之间起到中介作用 使用目的 保护目标对象增强目标对象 解释 Subject是顶层接口 xff0c
  • 04747 java程序设计笔记 --多线程

    文字篇 线程概念 进程 程序在处理机的一次运行 xff0c xff08 从代码加载 xff0c 执行至完毕的一个完成过程 xff09 线程 进程执行过程中产生的多条执行线索 xff0c 比进程单位更小的执行单位 它没有出口 xff0c 没有
  • Kubernetes(k8s)基础

    pod Pod是什么 Pod是Kubernetes创建或部署的最小单位 是Kubernetes集群中的一个应用实例 xff0c 总是部署在同一个节点Node上 Pod中包含了一个或多个容器 xff0c 还包括了存储 网络等各个容器共享的资源

随机推荐

  • 04747java程序设计 之 输入输出流

    输入输出流 数据流 概念 数据流指一组有顺序的 xff0c 有起点和重点的字节集合 输入流 概念 只读 xff0c 用于向计算机内输入信息使用 主要的读取方法 int read 从输入流中读取一个字节的二进制数据 int read byte
  • 04747java程序设计 -- 继承与多态

    继承与多态 子类 is a 关系 整体与部分 has a extends 继承关键词 父类也叫做 超类 基类 object 类 类层次最高点 xff0c 是所有类的直接或间接父类 方法 public final Class getClass
  • 03731计算机网络原理 - 计算机网络概念 脑图整理

  • 03137计算机网络原理 - 计算机网络体系结构

  • 03137计算机网络原 - 物理层

    物理层 基础概念 OSI模型最底层 功能 为在链路实体间传送比特流而对物理连接的 接通 维持 和 拆除 提供机械 电气 功能和规程方面的方法 作用 尽可能屏蔽现有多种多样的硬件设备 传输媒体和通信手段的差异 确保原始数据可以在各种物理媒介上
  • 03137计算机网络原理 - 数据链路层

    数据链路层 功能 定义 基本功能是 向该层用户 提供透明和可靠的数据传送基本服务 帧和介质访问控制 数据链路层 是 对物理层传输原始比特流功能的加强 将物理层提供的可能出错的粗粒连接改造成逻辑上无差错的数据链路 使之对网络层表现为无差错的线
  • 彻底卸载Android Studio

    在安装Android Studio会有很多问题导致无法正常运行 xff0c 多次下载AS多次错误后了解到 xff0c 删除以下四个文件才能彻底卸载Android Studio 第一个文件 xff1a gradle 路径 xff1a C Us
  • Linux远程登录

    L i n u x 远程登录
  • 03_SpringBoot项目配置

    文章目录 SpringBoot项目配置0x01 properties格式配置文件0x02 yml格式配置文件配置对象类型数据配置集合类型配置数组类型 0x03 properties和yml的区别优先级区别 0x04 配置文件在项目中的位置0
  • VS中空项目、win32项目、控制台程序的区别

    一 区别 xff08 1 xff09 Win32控制台程序 xff0c 没有界面 xff0c 只有命令符 生成的 exe 文件直接运行操作即可 xff08 2 xff09 Win32项目 xff0c 有界面 但是界面里面的控件 xff0c
  • kubectl命令应用

    kubectl命令语法 kubectl span class token punctuation span command span class token punctuation span span class token punctua
  • java生成10个随机数(1-100)到数组中,并倒序打印以及求平均值,最大值和最大值下标,并查找其中是否有8.

    代码如下 Scanner in 61 new Scanner System in Random r 61 new Random int arr 61 new int 10 int sum 61 0 int max 61 0 int a 61
  • [ 常用工具篇 ] Esxi 安装详解

    博主介绍 nbsp 博主介绍 大家好 我是 nbsp PowerShell nbsp 很高兴认识大家 主攻领域 渗透领域 数据通信 通讯安全 web安全 面试分析 点赞 评论 收藏 养成习惯 一键三连 欢迎关注 一起学习 一起讨论 一起进步
  • day13_spring环境配置及bean使用

    1 spring简介 xff1a 整合现有的技术框架 是一个轻量级的控制反转 xff08 IOC xff09 和面向切面编程的框架 xff08 AOP xff09 xff0c 支持事务的处理和对框架整合的支持 DI 控制反转 就是IOC x
  • 二叉树--求树的高度

    实现思想 1 求树高时我们可以利用递归思想来求 而递归主要的思想就是要将大问题化为小问题 2 我们求树高时 xff0c 可以分别求左右子树的高度然后比较左右子树的高度 xff0c 返回较大的值 代码实现 xff1a span class t
  • 实现BottomNavigationView和Navigation联动

    实现BottomNavigationView和Navigation联动 界面展示引入依赖创建Fragment创建navigation为BottomNavigationView创建menu主界面布局实现BottomNavigationView
  • Centos8安装JDK

    官网下载页 xff1a https www oracle com java technologies downloads 选择自己需要的JDK版本进行下载即可 一 下载上传 https docs oracle com javase 8 do
  • linux操作系统关机命令

    关机命令 在linux中关机命令 有以下几个 shutdow shutdown命令安全地将系统关机 有些用户会使用直接断掉电源的方式来关闭linux xff0c 这是十分危险的 因为linux与windows不同 xff0c 其后台运行着许
  • .eslintrc.js文件内容/配置eslint/eslint参数

    首先放一个官网的链接 List of available rules ESLint中文文档 然后直接上代码 这里以vue项目为例 xff0c 主要两个文件 xff0c 1是 eslintrc js文件 xff08 配置 xff09 xff0
  • 【python】使用pyinstaller将程序打包为exe文件

    前言 xff1a 如何将python的 py文件打包为exe文件 xff0c 以打包单独文件的简单程序 和打包基于pygame库编写的多模块程序 为例 xff0c 以及如何处理素材文件使打包后的文件可以正常运行 xff0c 还有一些总结 x