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 相关文章推荐
在Django框架中设置语言偏好的教程
Jul 27 Python
Python字典,函数,全局变量代码解析
Dec 18 Python
python实现时间o(1)的最小栈的实例代码
Jul 23 Python
django DRF图片路径问题的解决方法
Sep 10 Python
Python docx库用法示例分析
Feb 16 Python
Python实现最常见加密方式详解
Jul 13 Python
使用Python快乐学数学Github万星神器Manim简介
Aug 07 Python
解决python3 安装不了PIL的问题
Aug 16 Python
tensorflow mnist 数据加载实现并画图效果
Feb 05 Python
python列表返回重复数据的下标
Feb 10 Python
python中使用np.delete()的实例方法
Feb 01 Python
python 字典和列表嵌套用法详解
Jun 29 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
实用函数8
2007/11/08 PHP
在PHP中使用curl_init函数的说明
2010/11/02 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
IE无法设置短域名下Cookie
2010/09/23 Javascript
点击进行复制的JS代码实例
2013/08/23 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
jQuery Easyui Tabs扩展根据自定义属性打开页签
2016/08/15 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
JS判断输入的字符串是否是数字的方法(正则表达式)
2016/11/29 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
ES6新特性之模块Module用法详解
2017/04/01 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
AngularJS 前台分页实现的示例代码
2018/06/07 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
vue实现鼠标经过动画
2019/10/16 Javascript
JavaScript实现京东快递单号查询
2020/11/30 Javascript
在Python中用get()方法获取字典键值的教程
2015/05/21 Python
使用python绘制常用的图表
2016/08/27 Python
Diango + uwsgi + nginx项目部署的全过程(可外网访问)
2018/04/22 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
校本教研工作制度
2014/01/22 职场文书
《云房子》教学反思
2014/04/20 职场文书
电气工程及其自动化专业求职信
2014/06/23 职场文书
人身损害赔偿协议书范本
2014/09/27 职场文书
大学生入党自荐书
2015/03/05 职场文书
培训督导岗位职责
2015/04/10 职场文书
民间借贷纠纷起诉书
2015/08/03 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
Python实战之用tkinter库做一个鼠标模拟点击器
2021/04/27 Python