将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的标准模块包json详解
Mar 13 Python
pyqt5简介及安装方法介绍
Jan 31 Python
python利用Opencv实现人脸识别功能
Apr 25 Python
python文档字符串(函数使用说明)使用详解
Jul 30 Python
python基础 range的用法解析
Aug 23 Python
基于Django框架的权限组件rbac实例讲解
Aug 31 Python
Pycharm内置终端及远程SSH工具的使用教程图文详解
Mar 19 Python
matplotlib quiver箭图绘制案例
Apr 17 Python
Python参数传递实现过程及原理详解
May 14 Python
python名片管理系统开发
Jun 18 Python
Python 实现RSA加解密文本文件
Dec 30 Python
python中numpy数组与list相互转换实例方法
Jan 29 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(2)
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
php随机输出名人名言的代码
2012/10/07 PHP
PHP动态生成javascript文件的2个例子
2014/04/11 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
基于JQuery的列表拖动排序实现代码
2013/10/01 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
Node.js中JavaScript操作MySQL的常用方法整理
2016/03/01 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
微信小程序自定义多列选择器使用详解
2019/06/21 Javascript
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
python在命令行下使用google翻译(带语音)
2014/01/16 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
详解tensorflow训练自己的数据集实现CNN图像分类
2018/02/07 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
2018/02/13 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
python实现整数的二进制循环移位
2019/03/08 Python
python实现点击按钮修改数据的方法
2019/07/17 Python
2020新版本pycharm+anaconda+opencv+pyqt环境配置学习笔记,亲测可用
2020/03/24 Python
Spring http服务远程调用实现过程解析
2020/06/11 Python
浅谈TensorFlow中读取图像数据的三种方式
2020/06/30 Python
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
食品安全工作方案
2014/05/07 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
关于读书的演讲稿600字
2014/08/27 职场文书
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
2014年法制宣传日活动方案
2014/11/02 职场文书
2014年帮扶工作总结
2014/11/26 职场文书
事业单位年度考核个人总结
2015/02/12 职场文书
小学生心理健康活动总结
2015/05/08 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
基于Golang 高并发问题的解决方案
2021/05/08 Golang
nginx中proxy_pass各种用法详解
2021/11/07 Servers
多台电脑共享文件怎么设置?多台电脑共享文件操作教程
2022/04/08 数码科技