利用pyinstaller将py文件打包为exe的方法


Posted in Python onMay 14, 2018

写在前面

做大创的时候,因为需要计算合金的各种能量、温度等一大堆数据,为了能够福泽后来的学弟学妹,我决定将我处理数据时用的python程序打包成exe,这样就可以在没有安装python环境的电脑上运行我的程序了。所以上网查了一大堆如何打包的方法,尝试了py2exe和pyinstaller这两种方法,发现还是后者更加的简单便捷。同时为了能够帮助我自己以后再想用到的时候有一个教程可以查找,我就写了这一篇博客出来,留作纪念。

前提条件

首先我们需要两个东西:python3.4版本,pyinstaller模块。

在windows下用pip安装pyinstaller只需要在cmd中输入

pip install pyinstaller

即可。

开始打包

首先我们将想要打包的test.py文件放在文件夹Test中,test.py文件中内容如下

#输入两个数,求两个数之和。

x = input('请输入第一个数:')
y = input('请输入第二个数:')

z = float(x) +float(y)

print('求得和为:'+str(z))

z = input('请按任意键退出...')

这个文件夹绝对地址为C:/Test

所以我们首先通过cmd进入到这个文件夹内,也就是在cmd中输入

cd C:/Test

我们这就相当于已经进入到了这个文件夹中,接下来就是重头戏了,是时候打包了。

再在cmd中输入命令

pyinstaller -F test.py

其中-F这个参数代表将所有内容打包成一个exe文件。如果不带这个参数的话,它将会是一大堆文件,所以这相当于是方便拷贝和使用了。

当一长串信息闪过,最终停止后,我们就可以再看一下文件夹中的内容了,其中多出了一个dist文件夹,里面存放的就是我们所需要的东西:test.exe。

我们打开以后,就可以看到以下界面

利用pyinstaller将py文件打包为exe的方法

示例界面

恭喜你!成功了。

一些小坑

当然,小程序打包成exe谁也不像动则三四百兆,本来就是图个方便,如果太大的话反而还比较麻烦。所以我在打包的时候就发现pyinstaller会把程序用到的所有模块都给他包含进去。

当我用到了numpy模块的时候,我的exe程序一下子涨到了100+M,这就让我很费解,我看了一下打包的信息,原来他把各种PyQt5的模块也给包进去了,然而我的程序中并没有用到PyQt5这个模块,毕竟就一个黑框框,还没有给它写界面呢。

假如我用的例子是

import numpy as np
#输入两个数,求两个数之和。
x = input('请输入第一个数:')
y = input('请输入第二个数:')
z = float(x) +float(y)
print('求得和为:'+str(z))
z = input('请按任意键退出...')

生成的exe大小就到了100M.

所以无奈之下,我只能放弃使用numpy了。

所以诸位大佬如果知道怎么能够自己控制pyinstaller所打包进去的库,还希望在评论或者私信指点一下,感激不尽!!!以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之坑爹的字符编码
Sep 28 Python
深入理解python中的闭包和装饰器
Jun 12 Python
Python爬虫:通过关键字爬取百度图片
Feb 17 Python
pygame实现贪吃蛇游戏(上)
Oct 29 Python
python实现自动化报表功能(Oracle/plsql/Excel/多线程)
Dec 02 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
May 25 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
关于Theano和Tensorflow多GPU使用问题
Jun 19 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
使用Python操作MySQL的小技巧
Sep 10 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
分享几种python 变量合并方法
Mar 20 Python
django的登录注册系统的示例代码
May 14 #Python
django允许外部访问的实例讲解
May 14 #Python
运行django项目指定IP和端口的方法
May 14 #Python
python使用Flask操作mysql实现登录功能
May 14 #Python
查看Django和flask版本的方法
May 14 #Python
Python处理中文标点符号大集合
May 14 #Python
python numpy格式化打印的实例
May 14 #Python
You might like
php无限遍历文件夹示例分享
2014/03/04 PHP
Redis使用Eval多个键值自增的操作实例
2016/11/04 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
2016/11/04 PHP
关于php支持的协议与封装协议总结(推荐)
2017/11/17 PHP
PHP中上传文件打印错误错误类型分析
2019/04/14 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
javascript上传图片前预览图片兼容大多数浏览器
2013/10/25 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
jQuery操作表单常用控件方法小结
2015/03/23 Javascript
jQuery控制DIV层实现由大到小,由远及近动画变化效果
2015/10/09 Javascript
JavaScript面向对象编写购物车功能
2016/08/19 Javascript
利用bootstrapValidator验证UEditor
2016/09/14 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
bing Map 在vue项目中的使用详解
2018/04/09 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
小程序页面动态配置实现方法
2019/02/05 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
2019/10/11 Javascript
Vue.js实现立体计算器
2020/02/22 Javascript
vue实现简单图片上传
2020/06/30 Javascript
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
[07:06]2018DOTA2国际邀请赛寻真——卫冕冠军Team Liquid
2018/08/10 DOTA
Python操作MongoDB详解及实例
2017/05/18 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
python3实现基于用户的协同过滤
2018/05/31 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
python numpy 一维数组转变为多维数组的实例
2018/07/02 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
Visual Studio Code搭建django项目的方法步骤
2020/09/17 Python
英国异国风情旅游网站:Travel Talk Tours(团体旅游、探险旅游、帆船假期)
2018/07/26 全球购物
函授毕业生自我鉴定范文
2014/03/25 职场文书
违反交通法规检讨书
2014/09/10 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
教师批评与自我批评心得体会
2014/10/16 职场文书
优秀少先队员事迹材料
2014/12/24 职场文书