Pyinstaller 打包.py生成.exe的方法和报错总结

2023-11-13

Pyinstaller 打包.py生成.exe的方法和报错总结


简介

有时候自己写了个python脚本觉得挺好用想要分享给小伙伴,但是每次都要帮他们的电脑装个python环境。虽然说装一下也快,但是相对来说效率还是不高,要是能将python的**.py文件转化为.exe**,那么世界将变得更美好。这篇文章我将简单的介绍如何使用Pyinstaller来打包我们的python脚本。

安装 Pyinstaller

pyinstaller的官网为:http://www.pyinstaller.org/

如果有什么问题一般都能够在这里找到解答。

安装 pyinstaller还是非常的方便的,只需要一句话:

pip install pyinstaller

就OK了

打包 Python脚本

关于打包其实也很简单,也只需要一句话:

pyinstaller yourprogram.py

当然pyinstaller命令的语法是:

pyinstaller [options] script [script ...] | spec文件

在运行 pyinstaller命令后在yourprogram.py同一个目录下会产生一个文件两个文件夹:

  1. yourprogram.spec文件,该文件中写了一些配置,可以打开进行修改,下一次可以直接打包该文件,不用打包yourprogram.py了。
  2. build文件夹,包含一些日志文件和工作文件
  3. dist文件夹,包含可执行文件

1. 控制台窗口选项

-c, --console, --nowindowed 打包程序运行时,打开标准i / o控制台窗口(默认) 
-w, --windowed, --noconsole 打包程序运行时,不打开标准i / o控制台窗口(默认) 

2. 软件图标选项

-i FILE.ico , --icon FILE.ico 为你的程序添加一个图标

3. 版本信息选项

--version-file FILE.txt 可以将您的版本信息添加到你的软件当中

这个FILE.txt的文件内容为:

# UTF-8
#
VSVersionInfo(
  ffi=FixedFileInfo(
    # filevers and prodvers should be always a tuple with four items: (1, 2, 3, 4)
    # Set not needed items to zero 0.
    filevers=(10, 0, 17134, 1),
    prodvers=(10, 0, 17134, 1),
    # Contains a bitmask that specifies the valid bits 'flags'r
    mask=0x3f,
    # Contains a bitmask that specifies the Boolean attributes of the file.
    flags=0x0,
    # The operating system for which this file was designed.
    # 0x4 - NT and there is no need to change it.
    OS=0x40004,
    # The general type of file.
    # 0x1 - the file is an application.
    fileType=0x1,
    # The function of the file.
    # 0x0 - the function is not defined for this fileType
    subtype=0x0,
    # Creation date and time stamp.
    date=(0, 0)
    ),
  kids=[
    StringFileInfo(
      [
      StringTable(
        u'040904B0',
        [StringStruct(u'CompanyName', u'Microsoft Corporation'),
        StringStruct(u'FileDescription', u'Windows Command Processor'),
        StringStruct(u'FileVersion', u'10.0.17134.1 (WinBuild.160101.0800)'),
        StringStruct(u'InternalName', u'cmd'),
        StringStruct(u'LegalCopyright', u'© Microsoft Corporation. All rights reserved.'),
        StringStruct(u'OriginalFilename', u'Cmd.Exe'),
        StringStruct(u'ProductName', u'Microsoft® Windows® Operating System'),
        StringStruct(u'ProductVersion', u'10.0.17134.1')])
      ]),
    VarFileInfo([VarStruct(u'Translation', [1033, 1200])])
  ]
)

4. 生成结果选项

-D,--onedir 这会创建一个包含可执行文件的单文件夹包(默认)
-F,--onefile 这个只会创建一个可执行文件
--specpath DIR 用于存储生成的spec文件的文件夹(默认值:当前目录)
-n NAME, --name NAME 应用程序的名称(默认值:第一个脚本的名称)

以上四个就是常用的参数,可以根据自己的需求进行设置。

例子

下面这个是我打包一个“自动更新桌面的脚本”的命令:

G:\PyinstallerTest\Auto_Wallpaper>pyinstaller -F -i G:\PyinstallerTest\Auto_Wallpaper\icon\moon.ico --version-file=version.txt Auto_Wallpaper_of_Moon.py

执行后就能够成功的将**.py脚本转化为.exe**可执行文件。

截图如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pVD3tlXE-1604558877567)(https://i.imgur.com/lsD4QJg.jpg)]

错误总结

在这里我会总结我在使用pyinstaller过程中出现的错误和解决方法,我会在这里不断的更新我的内容,如果有需要可以关注一下哦。

1. AttributeError: ‘str’ object has no attribute ‘items’

错误内容截取:

for real_module_name, six_module_name in real_to_six_module_name.items():
AttributeError: 'str' object has no attribute 'items'

解决方法:

你需要更新一下你的setuptools

pip install --upgrade setuptools

2. 打包后运行.exe程序调试闪退

有时候将.py文件打包成.exe文件后,不一定能够正常运行。但是点.exe后程序一闪而退,就不知道问题出在哪里。

解决方法:

在cmd行里面运行你的.exe文件

3. 重复打包的时候显示No module named “XXX”

当我们第一次打包一个程序的时候,有可能会提示:No module named “XXX” 。然后我们会去安装相应缺少的包,装好后第二次准备打包,发现还是提示:No module named “XXX”。

解决方法:

删除你第一次打包残留的文件,特别是./build 目录下的所有文件。

4. 打包后发现文件过大

一个就几十行的程序,打包后可能会发现有一两百个MB。

解决方法:

如果你使用Anaconda中的某个已经装了很多包的环境,就很可能出现这个问题。这个时候只要再创建一个新的环境,只安装所依赖的包即可。

最后

希望对大家有所帮助!:-)

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

Pyinstaller 打包.py生成.exe的方法和报错总结 的相关文章

随机推荐

  • 信号是如何传输的

    一 信号 信息 人对现实世界事物存在方式或运动状态的某种认识 数据 用于描述事物的某些属性的具体量值 信号 信息传递的媒介 一 信号的分类 1 模拟信号 模拟信号是信号参数 幅度 频率等 大小连续变化的电磁波 可以以不同的频率在媒体上传输
  • springboot + vue 前端时间字符串,后台LocalDateTime 参数接收方法

    前端格式以 2020 05 09 10 55 22 这样的格式传值 后台实体类LocalDateTime 添加注解 即可接收到值 DateTimeFormat pattern yyyy MM dd HH mm ss JsonFormat p
  • day4:最长回文子串

    文章目录 问题描述 思路 实现代码 问题描述 给定一个字符串 s 找到 s 中最长的回文子串 你可以假设 s 的最大长度为 1000 示例 1 输入 babad 输出 bab 注意 aba 也是一个有效答案 示例 2 输入 cbbd 输出
  • [医疗相关任务]

    药物研发 GLAM
  • 【Linux】IO多路复用--poll函数基本处理流程

    poll 函数在服务端流程图 当我们的已连接套接字时间就绪 也就是connfd已连接套接字读事件就绪时候 那么我们就要读取接受缓冲区的数据 但是我们不能保证我们一次读取就能够读完 所以我们需要循环读取 那么就需要在应用层设置一个该connf
  • c:Bubble Sort

    file SortAlgorithm h brief 业务操作方法 VSCODE c11 author geovindu Geovin Du date 2023 09 19 ifndef SORTALGORITHM H define SOR
  • Opencv dft & idft

    Load an image cv Mat inputImage cv imread argv argc 1 0 Go float cv Mat fImage inputImage convertTo fImage CV 32F FFT st
  • HTML的无序列表、有序列表、自定义列表

    HTML的无序列表 1 无序列表是一个项目的列表 此列项目使用粗体圆点 典型的小黑圆圈 进行标记 无序列表始于 ul 无序列表 ul type disc li HTML li li CSS li li li ul ul
  • 函数的传递方式&不定长参数&参数解包

    文章目录 1 函数简介 2 函数的参数 2 1 形参和实参 2 2 函数的传递方式 2 2 1 位置传参 2 2 2 关键字传参 2 3 函数的实参类型 2 4 不定长参数 2 5 参数的解包 1 函数简介 函数也是一个对象 函数用来保存一
  • C++ 模板特例化

    文章目录 介绍 函数模板特例化 类模板特例化 介绍 模板作为C 泛型编程的基础十分重要 其使得一份代码能用于处理多种数据类型 而有些时候 我们会希望对一些特定的数据类型执行不同的代码 这时就需要使用模板特例化 template specia
  • Echarts 渐变色

    series i line itemStyle normal color Color Function default 自适应 图形的颜色 默认从全局调色盘 option color 获取颜色 颜色可以使用 RGB 表示 比如 rgb 12
  • Java技术栈,从入门到放弃,废了废了

    Java技术路线 应用框架 后端 Spring家族 Spring IoC AOP Spring MVC Spring Boot 自动配置 开箱即用 整合Web 整合数据库 事务问题 整合权限 Shiro Spring Security 整合
  • 开放集识别

    0 摘要 1 到目前为止 在计算机视觉中 几乎所有基于机器学习的识别算法的实验评估都采用了封闭集识别的形式 即在训练时已知所有测试类 对于视觉应用来说 一个更现实的场景是开放集识别 在训练时存在不完整的世界知识 在测试时未知的类可以提交给算
  • Vscode 打开文件注释中文乱码解决如下

    安装插件 ext install gbktoutf8 搜索encoding
  • 【LINUX计算机大白平凡学习linux之路】

    计算机大白平凡学习 之路 千里之行 始于足上 只有基础扎实 思路清析 写脚本才没有问题 多看一些牛人大咖写的脚本 看人家的思路与结构 会收益良多 一起努力学习吧 Linux是Torvalds先生所开发出来的 基于GPL的版权宣告之下 可以在
  • 神经网络优化(初始化权重)

    使隐藏层饱和了 跟之前我们说的输出层饱和问题相似 对于输出层 我们用改进的cost函数 比如cross entropy 但是对于隐藏层 我们无法通过cost函数来改进 更好的方法来初始化权重 因为传统的初始化权重问题是用标准正态分布 均值为
  • CentOS7.6 MySql 5.7.34安装部署

    一 卸载Mysql 查看系统是否安装默认的mysql rpm qa grep i mysql 如有 进行卸操作 rpm e nodeps 确认是否卸载完成 whereis mysql cd find name mysql cat etc p
  • 一种新型神经网络正在帮助物理学家应对数据分析的艰巨挑战

    来源 ScienceAI 本文约3000字 建议阅读5分钟 现在 在计算端 计算机科学往往处于领先地位 假设你有一本一千页的书 但每一页只有一行文字 你使用扫描仪提取书中包含的信息 这个特定的扫描仪系统地扫描每一页 一次扫描一平方英寸 要花
  • crmeb v4.3部署流程

    运行环境 CRMEB v4支持Lunix windows服务器环境 需要PHP7 1 7 3 版本支持 可运行于包括Apache和nginx在内的多种WEB服务器和模式 支持Mysql数据库 引擎用InnoDB 框架本身没有什么特别模块要求
  • Pyinstaller 打包.py生成.exe的方法和报错总结

    Pyinstaller 打包 py生成 exe的方法和报错总结 简介 有时候自己写了个python脚本觉得挺好用想要分享给小伙伴 但是每次都要帮他们的电脑装个python环境 虽然说装一下也快 但是相对来说效率还是不高 要是能将python