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 相关文章推荐
linux系统使用python监控apache服务器进程脚本分享
Jan 15 Python
Python实现网站注册验证码生成类
Jun 08 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
Jun 26 Python
pyqt5利用pyqtDesigner实现登录界面
Mar 28 Python
Pandas中resample方法详解
Jul 02 Python
Django rest framework jwt的使用方法详解
Aug 08 Python
Python使用itchat模块实现简单的微信控制电脑功能示例
Aug 26 Python
基于python的itchat库实现微信聊天机器人(推荐)
Oct 29 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
Nov 26 Python
Python selenium自动化测试模型图解
Apr 15 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
详解Python中的Lock和Rlock
Jan 26 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
第十节 抽象方法和抽象类 [10]
2006/10/09 PHP
PHP 已经成熟
2006/12/04 PHP
Apache2 httpd.conf 中文版
2006/12/06 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php封装单文件上传到数据库(路径)
2017/10/15 PHP
Thinkphp5框架实现获取数据库数据到视图的方法
2019/08/14 PHP
javascript 日期时间 转换的方法
2013/02/21 Javascript
jquery 无限级联菜单案例分享
2013/03/26 Javascript
网站如何做到完全不需要jQuery也可以满足简单需求
2013/06/27 Javascript
利用js实现遮罩以及弹出可移动登录窗口
2013/07/08 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
JavaScript学习笔记之DOM基础 2.4
2015/08/14 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
js实现的下拉框二级联动效果
2016/04/30 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
Bootstrap使用基础教程详解
2016/09/05 Javascript
JavaScript 动态三角函数实例详解
2017/01/08 Javascript
JS实现数组去重方法总结(六种方法)
2017/07/14 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
TypeScript魔法堂之枚举的超实用手册
2020/10/29 Javascript
Vue组件简易模拟实现购物车
2020/12/21 Vue.js
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[01:24]DOTA2上海特锦赛OG战队抵达 专车接机入驻总统套房
2016/02/23 DOTA
[37:23]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第二局
2016/03/04 DOTA
Pipenv一键搭建python虚拟环境的方法
2018/05/22 Python
python使用webdriver爬取微信公众号
2018/08/31 Python
详解python算法之冒泡排序
2019/03/05 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
利用Python实现Json序列化库的方法步骤
2020/09/09 Python
计算机科学与技术应届生求职信
2013/11/07 职场文书
公司拓展活动方案
2014/02/13 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
大学生团员个人总结
2015/02/14 职场文书
Redis批量生成数据的实现
2022/06/05 Redis