将Python文件打包成.EXE可执行文件的方法


Posted in Python onAugust 11, 2019

利用Python写了一个小脚本想要传给使用Windows但没有装Python的朋友执行,这时候就可以利用将档案包装成exe档案,让没有Python的朋友也可以执行。本篇将介绍利用套件「PyInstaller」制作exe档。

1|0安装方法

#安装pyinstaller
pip install pyinstaller
#安装依赖
pip install pywin32-ctypes

2|0常用参数介绍

pyinstaller -h来查看参数

-F打包成一个exe文件

-i图标路径

-w使用视窗,无控制台

-c使用控制台,无视窗

-D创建一个目录,包含exe以及其他一些依赖性文件

编译文件时,我们通常使用如下命令:

pyinstaller -F -w -i favo.ico main.py

3|0静态文件

对于python所依赖的图片,config.yaml等静态文件,pyinstall不会自动打包,需要手动在main.py(所需要打包的入口文件)的相同目录中寻找main.spec,修改datas依赖,才可以自动打包到exe的相同目录下,然后执行即可

datas是一个数组,每个子项是一个tuple,其中tuple的第一个参数是你要打包的源路径,第二个参数是打包后的名字

# -*- mode: python -*-

block_cipher = None

a = Analysis(['ui.py'],
pathex=['C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test'],
binaries=[],
datas=[('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\images','images'),('C:\\Users\\user\\Desktop\\resilio\\toyou\\code\\zeus_board_test\\question.yaml','question.yaml')],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False)

然后执行:

pyinstaller -F main.spec

4|0示例

如下图所示,我们编写一个输出helow pyinstaller的Python程序,并利用input()使程序可以暂时停在输出画面。

print('helow pyinstaller')
input('please wait:')

编译python为exe,编译过程中会自动安装相关依赖

pyinstaller -F hello.py

编译过程中会产生如下输出:

…
6942 INFO: checking PY
6944 INFO: Building because toc changed
6944 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz
7559 INFO: Building PYZ(ZlibArchive)C:\Users\user\Desktop\test\build\test\PYZ-00.pyz completed successfully.
7568 INFO: checking PKG
7569 INFO: Building because toc changed
7569 INFO: Building PKG(CArchive)PKG-00.pkg
9407 INFO: Building PKG(CArchive)PKG-00.pkg completed successfully.
9409 INFO: Bootloader c:\users\user\appdata\local\programs\python\python36\lib\site-packages\PyInstaller\bootloader\Windows-64bit\run.exe9409 INFO: checking EXE
9411 INFO: Building because toc changed
9411 INFO: Building EXE from EXE-00.toc
9412 INFO: Appending archive to EXE C:\Users\user\Desktop\test\dist\test.exe
9455 INFO: Building EXE from EXE-00.toc completed successfully.

通过输出可以看出pyinstaller进行了如下操作:

会先建立一个hello.spec

建立「build」文件夹

建立log纪录档与工作档案于文件夹build中

建立「dist」文件夹

建立执行档(.exe)在「dist」文件夹

4|1注意事项

执行档案可在win8/win10,64位的电脑运行,但win7 x64和其余所有32位失败,会提示不兼容,若要能32位与64位皆可运行,就要在Python 32位的环境下编译PyInstaller打包exe,才能在32位与64位成功。

Python 相关文章推荐
通过代码实例展示Python中列表生成式的用法
Mar 31 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
Tensorflow 同时载入多个模型的实例讲解
Jul 27 Python
在python中实现将一张图片剪切成四份的方法
Dec 05 Python
python实现在遍历列表时,直接对dict元素增加字段的方法
Jan 15 Python
python三方库之requests的快速上手
Mar 04 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
python3 深浅copy对比详解
Aug 12 Python
详解PyTorch手写数字识别(MNIST数据集)
Aug 16 Python
Django学习之文件上传与下载
Oct 06 Python
python中HTMLParser模块知识点总结
Jan 25 Python
python多线程同步实例教程
Aug 11 #Python
pandas的to_datetime时间转换使用及学习心得
Aug 11 #Python
python中时间转换datetime和pd.to_datetime详析
Aug 11 #Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 #Python
python3实现带多张图片、附件的邮件发送
Aug 10 #Python
python实现邮件自动发送
Aug 10 #Python
python爬取百度贴吧前1000页内容(requests库面向对象思想实现)
Aug 10 #Python
You might like
PHP 在线翻译函数代码
2009/05/07 PHP
PHP中MVC模式的模板引擎开发经验分享
2011/03/23 PHP
easyui的tabs update正确用法分享
2014/03/21 PHP
Yii使用CLinkPager分页实例详解
2014/07/23 PHP
Zend Framework动作助手FlashMessenger用法详解
2016/03/05 PHP
Yii中的cookie的发送和读取
2016/07/27 PHP
php获取当前url地址的方法小结
2017/01/10 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
jquery手机触屏滑动拼音字母城市选择器的实例代码
2017/12/11 jQuery
vue 自定义 select内置组件
2018/04/10 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
vue v-for循环重复数据无法添加问题解决方法【加track-by='索引'】
2019/03/15 Javascript
Element-UI+Vue模式使用总结
2020/01/02 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
Vuex实现购物车小功能
2020/08/17 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
探索node之事件循环的实现
2020/10/30 Javascript
[06:40]2014DOTA2西雅图国际邀请赛 DK战队巡礼
2014/07/07 DOTA
Python的SQLalchemy模块连接与操作MySQL的基础示例
2016/07/11 Python
快速了解Python开发中的cookie及简单代码示例
2018/01/17 Python
Python读写及备份oracle数据库操作示例
2018/05/17 Python
在python里协程使用同步锁Lock的实例
2019/02/19 Python
Django Rest framework三种分页方式详解
2019/07/26 Python
通过实例学习Python Excel操作
2020/01/06 Python
python机器学习库xgboost的使用
2020/01/20 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
序列化Python对象的方法
2020/08/01 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
大学生演讲稿
2014/04/25 职场文书
导师就业推荐信范文
2014/05/22 职场文书
2014年教师节寄语
2014/08/11 职场文书