利用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设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
Python中__init__.py文件的作用详解
Sep 18 Python
python语言元素知识点详解
May 15 Python
Python除法之传统除法、Floor除法及真除法实例详解
May 23 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
Jun 11 Python
python对文件目录的操作方法实例总结
Jun 24 Python
python递归法实现简易连连看小游戏
Mar 25 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
Python 实现日志同时输出到屏幕和文件
Feb 19 Python
Python matplotlib实时画图案例
Apr 23 Python
python datetime时间格式的相互转换问题
Jun 11 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
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php使用parse_url和parse_str解析URL
2015/02/22 PHP
PHP多态代码实例
2015/06/26 PHP
PHP中的随机性 你觉得自己幸运吗?
2016/01/22 PHP
PHP实现的构造sql语句类实例
2016/02/03 PHP
浅析Laravel5中队列的配置及使用
2016/08/04 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
PHPstorm激活码2020年5月13日亲测有效
2020/09/17 PHP
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
js触发select onchange事件的小技巧
2014/08/05 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
JS实现前端缓存的方法
2017/09/21 Javascript
iframe高度自适应及隐藏滚动条的实例详解
2017/09/29 Javascript
浅谈React Native Flexbox布局(小结)
2018/01/08 Javascript
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
vue和webpack项目构建过程常用的npm命令详解
2018/06/15 Javascript
解决axios发送post请求返回400状态码的问题
2018/08/11 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
2018/10/09 Javascript
Vuejs学习笔记之使用指令v-model完成表单的数据双向绑定
2019/04/29 Javascript
JQuery省市联动效果实现过程详解
2020/05/08 jQuery
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
Python3环境安装Scrapy爬虫框架过程及常见错误
2019/07/12 Python
python 控制Asterisk AMI接口外呼电话的例子
2019/08/08 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
如何提高python 中for循环的效率
2020/04/15 Python
css3与html5实现响应式导航菜单(导航栏)效果分享
2014/02/12 HTML / CSS
Expedia西班牙:预订酒店、机票、旅行和廉价度假套餐
2019/04/10 全球购物
索尼巴西商店:Sony巴西
2019/06/21 全球购物
成人毕业生自我鉴定
2013/10/18 职场文书
团委副书记工作总结
2015/08/14 职场文书
go语言中http超时引发的事故解决
2021/06/02 Golang
python中字符串String及其常见操作指南(方法、函数)
2022/04/06 Python