将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基于queue和threading实现多线程下载实例
Oct 08 Python
ubuntu中配置pyqt4环境教程
Dec 27 Python
PyQt5+requests实现车票查询工具
Jan 21 Python
Python按钮的响应事件详解
Mar 04 Python
Python异步操作MySQL示例【使用aiomysql】
May 16 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 Python
详解Windows下PyCharm安装Numpy包及无法安装问题解决方案
Jun 18 Python
Python监听剪切板实现方法代码实例
Nov 11 Python
Python如何使用ConfigParser读取配置文件
Nov 12 Python
python实现Nao机器人的单目测距
Sep 04 Python
python 学习GCN图卷积神经网络
May 11 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 冒泡排序 交换排序法
2011/05/10 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
2012/12/11 PHP
PHP读取xml方法介绍
2013/01/12 PHP
php中strtotime函数性能分析
2016/11/20 PHP
php微信公众号开发模式详解
2016/11/28 PHP
Javascript 网页黑白效果实现代码(兼容IE/FF等)
2010/04/23 Javascript
Jquery uploadify图片上传插件无法上传的解决方法
2013/12/16 Javascript
javascript与有限状态机详解
2014/05/08 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
iscroll.js滚动加载实例详解
2017/07/18 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
使用Python的Twisted框架编写简单的网络客户端
2015/04/16 Python
Python中类型关系和继承关系实例详解
2015/05/25 Python
Python读取网页内容的方法
2015/07/30 Python
基于Django filter中用contains和icontains的区别(详解)
2017/12/12 Python
python方法生成txt标签文件的实例代码
2018/05/10 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
几行Python代码爬取3000+上市公司的信息
2019/01/24 Python
我用Python抓取了7000 多本电子书案例详解
2019/03/25 Python
对python特殊函数 __call__()的使用详解
2019/07/02 Python
python for循环remove同一个list过程解析
2019/08/14 Python
浅析Django 接收所有文件,前端展示文件(包括视频,文件,图片)ajax请求
2020/03/09 Python
Conforama瑞士:家具、厨房、电器、装饰
2020/09/06 全球购物
高中军训感言500字
2014/02/24 职场文书
党课培训心得体会
2014/09/02 职场文书
再婚婚前财产协议书范本
2014/10/19 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
人事局接收函
2015/01/30 职场文书
2015年房地产销售工作总结
2015/04/20 职场文书
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis