Python打包方法Pyinstaller的使用


Posted in Python onOctober 09, 2018

Python是一个脚本语言,被解释器解释执行。它的发布方式:

  • .py文件:对于开源项目或者源码没那么重要的,直接提供源码,需要使用者自行安装Python并且安装依赖的各种库。(Python官方的各种安装包就是这样做的)
  • .pyc文件:有些公司或个人因为机密或者各种原因,不愿意源码被运行者看到,可以使用pyc文件发布,pyc文件是Python解释器可以识别的二进制码,故发布后也是跨平台的,需要使用者安装相应版本的Python和依赖库。
  • 可执行文件:对于非码农用户或者一些小白用户,你让他装个Python同时还要折腾一堆依赖库,那简直是个灾难。对于此类用户,最简单的方式就是提供一个可执行文件,只需要把用法告诉Ta即可。比较麻烦的是需要针对不同平台需要打包不同的可执行文件(Windows,Linux,Mac,...)。

本文主要就是介绍最后一种方式,.py和.pyc都比较简单,Python本身就可以搞定。将Python脚本打包成可执行文件有多种方式,本文重点介绍PyInstaller,其它仅作比较和参考。

Python版本:Python3.5.2或本地下载地址

一、安装Pyinstaller

1、安装pywin32

下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装

使用pip命令安装:pip install pywin32

2、安装Pyinstaller

下载安装文件安装:官网

使用pip命令安装:pip install PyInstaller

二、使用Pyinstaller

1、使用下载安装的方式安装的Pyinstaller打包方式

将需要打包的文件放在解压得到的Pyinstaller文件夹中,打开cmd窗口,把路径切换到当前路径打开命令提示行,输入以下内容(最后的是文件名):

python pyinstaller.py -F myfile.py

2、使用pip方式安装的Pyinstaller打包方式

打开cmd窗口,把路径切换到文件所在路径(文件随便放在哪里都行)打开命令提示行,输入以下内容(最后的是文件名):

pyinstaller -F myfile.py

3、输入参数的含义

-F 表示生成单个可执行文件

-w 表示去掉控制台窗口,这在GUI界面时非常有用。不过如果是命令行程序的话那就把这个选项删除吧!

-p 表示你自己自定义需要加载的类路径,一般情况下用不到

-i 表示可执行文件的图标

三、注意事项

文件中使用了第三方库的打包方式

在打包之前务必找到第三方库的包,把包复制到到跟myfile.py同目录下,然后再使用以上2种方式打包,否则会打包失败或者即使打包成功,程序也会闪退。

下面演示一下使用了第三方库的打包方式:

找到第三方库的包,如使用了requests,可以使用查找的方式,找到这个包在哪里,然后把它复制到myfile.py同目录下

Python打包方法Pyinstaller的使用

把包文件复制到myfile.py目录下

Python打包方法Pyinstaller的使用

给程序换图标的方法

输入命令中添加一个-i tubiao.ico(图标的相对路径)。如图:

Python打包方法Pyinstaller的使用

四、exe文件生成

如果程序打包过程没有报错,则会生成3个文件夹(有时候是2个),其中名为dist的文件夹中会有一个myfile.exe文件,运行一下,如果没有问题就打包成功,可以把这个exe文件单独拿出去用,其他的生成的文件夹可以删掉了。

Python打包方法Pyinstaller的使用

其他打包工具

distribute

功能类似setuptools. 安装后会有easy_install. 支持Python2和Python3.
官方: https://pypi.python.org/pypi/distribute/0.7.3
已经于2013年7月5日的0.7.3版后停止开发。

distutils2

功能类似setuptools.
官方:https://pypi.python.org/pypi/Distutils2/1.0a4
已经于2012年3月13日的1.0a4版后开始停止开发。
PyPI上的原文: keep using setuptools and pip for now, don't use distutils2.

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python获取糗百图片代码实例
Dec 18 Python
Python简单的制作图片验证码实例
May 31 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
Jan 24 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
Jun 20 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
Django 反向生成url实例详解
Jul 30 Python
wxpython布局的实现方法
Nov 01 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
Mar 17 Python
Python urllib2运行过程原理解析
Jun 04 Python
解决python 虚拟环境删除包无法加载的问题
Jul 13 Python
python解析json数据
Apr 29 Python
Python如何发布程序的详细教程
Oct 09 #Python
python如何发布自已pip项目的方法步骤
Oct 09 #Python
Django csrf 验证问题的实现
Oct 09 #Python
Python正则表达式指南 推荐
Oct 09 #Python
详解Django的CSRF认证实现
Oct 09 #Python
浅析python中的迭代与迭代对象
Oct 08 #Python
实例讲解python中的序列化知识点
Oct 08 #Python
You might like
亚洲咖啡有什么?亚洲咖啡产地介绍 亚洲咖啡有什么特点?
2021/03/05 新手入门
设置php页面编码的两种方法示例介绍
2014/03/03 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
PHP使用Http Post请求发送Json对象数据代码解析
2020/07/16 PHP
ajax异步刷新实现更新数据库
2012/12/03 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
jQuery .attr()和.removeAttr()方法操作元素属性示例
2013/07/16 Javascript
改变状态栏文字的js代码
2014/06/13 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
jQuery简单实现点击文本框复制内容到剪贴板上的方法
2016/08/01 Javascript
用原生js统计文本行数的简单示例
2016/08/19 Javascript
jQuery实现页面滚动时智能浮动定位
2017/01/08 Javascript
使用nodejs下载风景壁纸
2017/02/05 NodeJs
原生JS实现N级菜单的代码
2017/05/21 Javascript
Angular项目从新建、打包到nginx部署全过程记录
2017/12/09 Javascript
原来JS还可以这样拆箱转换详解
2019/02/01 Javascript
解决layer 关闭当前弹窗 关闭遮罩层 input值获取不到的问题
2019/09/25 Javascript
使用matplotlib画散点图的方法
2018/05/25 Python
python将pandas datarame保存为txt文件的实例
2019/02/12 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
python基于socket函数实现端口扫描
2020/05/28 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
英国哈罗德园艺:Harrod Horticultural
2020/03/31 全球购物
C#如何进行LDAP用户校验
2012/11/21 面试题
linux面试题参考答案(5)
2014/09/01 面试题
继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?
2015/11/18 面试题
一封普通求职者的求职信
2013/11/20 职场文书
就业自荐书
2013/12/05 职场文书
《三亚落日》教学反思
2014/04/26 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书