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制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
python实现的简单RPG游戏流程实例
Jun 28 Python
Django+Ajax+jQuery实现网页动态更新的实例
May 28 Python
PyQt4实时显示文本内容GUI的示例
Jun 14 Python
python批量处理文件或文件夹
Jul 28 Python
python使用yield压平嵌套字典的超简单方法
Nov 02 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
Jan 09 Python
python异常处理之try finally不报错的原因
May 18 Python
python如何安装下载后的模块
Jul 03 Python
如何用python爬取微博热搜数据并保存
Feb 20 Python
pandas 操作 Excel操作总结
Mar 31 Python
再也不用花钱买漫画!Python爬取某漫画的脚本及源码
Jun 09 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 输出缓存详解
2009/06/20 PHP
php 无法载入mysql扩展
2010/03/12 PHP
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
帝国cms目录结构分享
2015/07/06 PHP
thinkPHP5.0框架验证码调用及点击图片刷新简单实现方法
2018/09/07 PHP
WordPress伪静态规则设置代码实例
2020/12/10 PHP
关于递归运算的顺序测试代码
2011/11/30 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
javascript显示用户停留时间的简单实例
2013/08/05 Javascript
JQuery对id中含有特殊字符的转义处理示例
2013/09/06 Javascript
jQuery实现带分组数据的Table表头排序实例分析
2015/11/24 Javascript
原生JS实现旋转木马式图片轮播插件
2016/04/25 Javascript
node.js版本管理工具n无效的原理和解决方法
2016/11/24 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
vue 实现的树形菜的实例代码
2018/03/19 Javascript
Vue.js上传图片到阿里云OSS存储的方法示例
2018/12/13 Javascript
6种JavaScript继承方式及优缺点(小结)
2020/02/06 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
2020/11/20 Vue.js
Python 基础教程之闭包的使用方法
2017/09/29 Python
Python mutiprocessing多线程池pool操作示例
2019/01/30 Python
python 实现兔子生兔子示例
2019/11/21 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
Python命令行参数argv和argparse该如何使用
2021/02/08 Python
详解CSS3开启硬件加速的使用和坑
2017/08/21 HTML / CSS
CSS3+font字体文件实现圆形半透明菜单具体步骤(图解)
2013/06/03 HTML / CSS
HTML5实现的图片无限加载的瀑布流效果另带边框圆角阴影
2014/03/07 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
美国领先的家庭智能音响系统品牌:Sonos
2018/07/20 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
考博专家推荐信模板
2013/12/02 职场文书
入党自荐书范文
2014/03/09 职场文书
财务经理岗位职责范本
2015/04/08 职场文书
检讨书格式
2015/05/07 职场文书
幼儿园安全教育月活动总结
2015/05/08 职场文书
大学生奶茶店创业计划书
2019/06/25 职场文书