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


Posted in Python onApril 02, 2019

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**可执行文件。

错误总结

在这里我会总结我在使用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文件

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
python二叉树遍历的实现方法
Nov 21 Python
python监控网站运行异常并发送邮件的方法
Mar 13 Python
安装Python的web.py框架并从hello world开始编程
Apr 25 Python
python如何爬取个性签名
Jun 19 Python
Pandas读取MySQL数据到DataFrame的方法
Jul 25 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
Python3.5运算符操作实例详解
Apr 25 Python
Django 拆分model和view的实现方法
Aug 16 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
Mar 30 Python
Python 存取npy格式数据实例
Jul 01 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
Django REST Framework 分页(Pagination)详解
Nov 30 Python
Python3字符串encode与decode的讲解
Apr 02 #Python
深入了解和应用Python 装饰器 @decorator
Apr 02 #Python
python使用Plotly绘图工具绘制散点图、线形图
Apr 02 #Python
浅谈python的输入输出,注释,基本数据类型
Apr 02 #Python
windows下numpy下载与安装图文教程
Apr 02 #Python
python环境路径配置以及命令行运行脚本
Apr 02 #Python
详解Python使用Plotly绘图工具,绘制甘特图
Apr 02 #Python
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
深入解析php中的foreach问题
2013/06/30 PHP
PHP简单日历实现方法
2016/07/20 PHP
php+redis实现注册、删除、编辑、分页、登录、关注等功能示例
2017/02/15 PHP
thinkphp5 + ajax 使用formdata提交数据(包括文件上传) 后台返回json完整实例
2020/03/02 PHP
贴一个在Mozilla中常用的Javascript代码
2007/01/09 Javascript
javascript iframe编程相关代码
2009/12/28 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
javascript中if和switch,==和===详解
2015/07/30 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
JavaScript获取ul中li个数的方法
2017/02/13 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
js与jQuery实现的用户注册协议倒计时功能实例【三种方法】
2017/11/09 jQuery
解决使用layui对select append元素无效或者未及时更新的问题
2019/09/18 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
itchat接口使用示例
2017/10/23 Python
python机器学习理论与实战(五)支持向量机
2018/01/19 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
python 模拟银行转账功能过程详解
2019/08/06 Python
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
幼儿园大班新学期寄语
2014/01/18 职场文书
八年级生物教学反思
2014/01/22 职场文书
党风廉设责任书
2014/04/16 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
2016年圣诞节寄语(一句话)
2015/12/07 职场文书
青年教师听课心得体会
2016/01/15 职场文书
Win10系统下配置Java环境变量
2021/06/13 Java/Android
Python答题卡识别并给出分数的实现代码
2021/06/22 Python
Python实现生活常识解答机器人
2021/06/28 Python
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS