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实现一个简单的能够发送带附件的邮件程序的教程
Apr 08 Python
Python文件去除注释的方法
May 25 Python
Python利用Nagios增加微信报警通知的功能
Feb 18 Python
Python爬虫的两套解析方法和四种爬虫实现过程
Jul 20 Python
python实现全盘扫描搜索功能的方法
Feb 14 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
基于Python的图像数据增强Data Augmentation解析
Aug 13 Python
python中有关时间日期格式转换问题
Dec 25 Python
Python如何实现在字符串里嵌入双引号或者单引号
Mar 02 Python
Python实现CAN报文转换工具教程
May 05 Python
python help函数实例用法
Dec 06 Python
Python自动化实战之接口请求的实现
May 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
PHP分多步骤填写发布信息的简单方法实例代码
2012/09/23 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
2020/11/10 PHP
不错的一个日期输入 动态
2006/11/06 Javascript
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
js自定义鼠标右键的实现原理及源码
2014/06/23 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
2015/05/25 Javascript
jquery实现全屏滚动
2015/12/28 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
第一章之初识Bootstrap
2016/04/25 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
js实现九宫格的随机颜色跳转
2017/02/19 Javascript
在bootstrap中实现轮播图实例代码
2017/06/11 Javascript
关于使用js算总价的问题
2017/06/23 Javascript
vue绑定设置属性的多种方式(5)
2017/08/16 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
使用优化器来提升Python程序的执行效率的教程
2015/04/02 Python
Python中用于去除空格的三个函数的使用小结
2015/04/07 Python
Python实现多线程抓取妹子图
2015/08/08 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
python3.5 cv2 获取视频特定帧生成jpg图片
2019/08/28 Python
django 简单实现登录验证给你
2019/11/06 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
Python单例模式的四种创建方式实例解析
2020/03/04 Python
如何让python的运行速度得到提升
2020/07/08 Python
使用CSS3的背景渐变Text Gradient 创建文字颜色渐变
2014/08/19 HTML / CSS
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
小学安全教育月活动总结
2014/07/07 职场文书
四风问题对照检查材料思想汇报
2014/10/07 职场文书
监守自盗观后感
2015/06/10 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
2019运动会广播加油稿汇总
2019/08/21 职场文书