将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 Trie树实现字典排序
Mar 28 Python
python实现DNS正向查询、反向查询的例子
Apr 25 Python
python中list常用操作实例详解
Jun 03 Python
详解Django框架中用户的登录和退出的实现
Jul 23 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例
Aug 01 Python
python将四元数变换为旋转矩阵的实例
Dec 04 Python
tensorflow自定义激活函数实例
Feb 04 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
python进行二次方程式计算的实例讲解
Dec 06 Python
在PyCharm中安装PaddlePaddle的方法
Feb 05 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
星际玩家的三大定律
2020/03/04 星际争霸
php中禁止单个IP与ip段访问的代码小结
2012/07/04 PHP
php字符串分割函数explode的实例代码
2013/02/07 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
PHP基于单例模式编写PDO类的方法
2016/09/13 PHP
设定php简写功能的方法
2019/11/28 PHP
Mootools 1.2教程 滚动条(Slider)
2009/09/15 Javascript
jquery.validate使用攻略 第二部
2010/07/01 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
jquery如何通过name名称获取当前name的value值
2013/12/20 Javascript
php基于redis处理session的方法
2016/03/14 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
Javascript继承机制详解
2017/05/30 Javascript
微信小程序授权获取用户详细信息openid的实例详解
2017/09/20 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
thinkjs微信中控之微信鉴权登陆的实现代码
2019/08/08 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
Python编程给numpy矩阵添加一列方法示例
2017/12/04 Python
Windows系统下PhantomJS的安装和基本用法
2018/10/21 Python
Python实现求两个数组交集的方法示例
2019/02/23 Python
python用requests实现http请求代码实例
2019/10/31 Python
canvas实现圆绘制的示例代码
2019/09/11 HTML / CSS
全球酒店预订网站:Hotels.com
2016/08/10 全球购物
Silk Therapeutics官网:清洁、抗衰老护肤品
2020/08/12 全球购物
元旦晚会邀请函
2014/02/01 职场文书
2014年公司庆元旦活动方案
2014/03/05 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
领导班子对照检查剖析材料
2014/10/13 职场文书
学期个人自我总结
2015/02/13 职场文书
心灵捕手观后感
2015/06/02 职场文书
中学语文教学反思
2016/02/16 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers
PyTorch 实现L2正则化以及Dropout的操作
2021/05/27 Python
Java存储没有重复元素的数组
2022/04/29 Java/Android