在 PyCharm 中使用 PyInstaller 打包 EXE 之过程简记
背景
- Python 3.7.7
- PyCharm 2019.1.1
- PyInstaller 4.10
约定
下文把工程文件夹暂且称为“入口点目录”(即存放
venv
的目录)如果 Terminal 未处于该目录,则需将 Terminal 也进入到该目录。例如:Terminal 目前处于
my_project\venv\Scripts\
,则应执行cd ..\..
退回到my_project\
(即“入口点目录”)Microsoft Windows [版本 10.0.19043.1415] (c) Microsoft Corporation。保留所有权利。(venv) C:\Users\Administrator\Desktop\my_project\venv\Scripts>cd ..\..(venv) C:\Users\Administrator\Desktop\my_project>
假设程序入口点所在文件
main.py
也位于“入口点目录”中(如果不在,后续参数中对应修改为实际位置即可)
过程
1) 安装 PyInstaller
在 PyCharm 的 Terminal 执行:
pip install pyinstaller
2) 放入 UPX(此步可选)
用于减小 exe 文件大小。
在 https://github.com/upx/upx/releases 下载解压后,把 upx.exe
放到“入口点目录”。
注:由于 Python 本身的特点,哪怕只有一句 print('Hello world!')
,压缩打包后也在 4.51M 左右,难以再小了。
3) 放入图标文件(此步可选)
Ico 格式,放到“入口点目录”。
假设文件名为 app.ico
。
4) 打包
在 PyCharm 的 Terminal 执行:
pyinstaller -F -i app.ico main.py
注1:如果在不是第一次打包时,打包过程容易莫名其妙终止,还报 succeed,可以通过先手动删除“入口点目录”下的 build\main
文件夹和 dist\main.exe
和 __pycache__\main.cpython-3*.pyc
后再打包来解决。
注2:常用参数及说明:
pyinstaller [-F|-D] [options] <entry>
必要参数:
-F 打包成单文件
-D 按文件夹打包
<entry> 入口点文件
可选参数:
options:
-i <icon_file> 启用图标及图标文件
[-c|-w]
-c 以控制台运行
-w 以窗口运行
要参见更多参数,在 PyCharm 的 Terminal 执行:
pyinstaller
5) EXE 输出
位于“入口点目录”中的 dist
文件夹下。
注:不要到 build
文件夹去找,它只是个临时目录(受其他语言或开发环境影响容易习惯性地进到这里)。
6) 试运行
双击运行打包完的 exe,初次打包不一定能成功运行。
如果闪退,就在 cmd 里运行它,就不闪退了。通常是因为缺少某些模块导致的,缺少者也会在 cmd 中报出,对应在 PyCharm 中安装,再重新打包就行了(重复从 4 开始的步骤)。
7) 善后工作
把 exe 拷贝到一个单独目录,作为产品目录。现在,生成的 exe 和 main.py
是等价的。若 main.py
有依赖文件,则也需要拷贝过来,并保持目录结构;若 main.py
有运行时产生的文件,则它们也会相对 exe 所在位置而产生。
在 PyCharm 中使用 PyInstaller 打包 EXE 之过程简记相关推荐
- python打包exe黑框一闪而过,解决pyinstaller打包exe文件出现命令窗口一闪而过的问题...
用pyinstaller打包的exe文件打开时,命令窗口一闪而过,并且未出现GUI界面,也看不到错误信息,然后去网上搜相关的信息,最多的两种说法: 1.添加raw_input()或者os.system ...
- 解决pyinstaller打包exe文件过大(菜鸟一刀切傻办法)
pyinstaller打包exe文件过大 作为认真学习了Python两个多月的小白,觉得python还是有很多玄学,一直搞不懂明明一毛一样的步骤,为什么我用pyinstaller打包出来的exe有30 ...
- Py打包应用程序(zipapp打包.pyz文件、pyinstaller打包exe文件)
''' Py打包应用程序.py (zipapp打包.pyz文件.pyinstaller打包exe文件)注意: 一.zipapp模块 打包档案包 的 命令行语法: python -m zipapp so ...
- Pyinstaller 打包exe附带资源,运行时自动解压所需资源(图片文本音频等)
前言: 用Pyinstaller 打包exe时,有时候得附带上一些资源,才能让程序不那么单调. 在网上也有很多把依赖文件打包进exe的方法,不过都只能打包一些图片或者文本而已. 还有一个就是通过修改P ...
- pyinstaller打包exe(32位和64位)和运行太慢等问题解决
pyinstaller打包exe(32位和64位)和运行太慢等问题解决 文章目录 pyinstaller打包exe(32位和64位)和运行太慢等问题解决 前言 一.pyinstaller的安装 二.p ...
- Pyinstaller 打包exe 报错 failed to execute script XXX的一种解决方案
最近用PyQt5写了一个界面小程序,需要打包成exe给到其他windows上使用,一开始使用python 3.7 64位,用pyinstaller打包exe,在64位机上运行正常. 但是目标电脑是32 ...
- (1)python pyinstaller打包exe添加版本信息(2)python获取exe版本信息(3)pyqt5开发exe添加检查版本更新功能
笔者总结不容易点个关注吧 一键三联哦! 感谢您! python pyinstaller打包exe添加版本信息 打包并添加版本信息 注意!这里有个坑 如果第二次要修改版权信息 要将fi ...
- Pyinstaller打包exe(包括打包资源文件 绝不出错版)
Pyinstaller打包exe(包括打包资源文件 绝不出错版) 依赖包及其对应的版本号 PyQt5 5.10.1 PyQt5-Qt5 5.15.2 PyQt5-sip 12.9.0 pyinstal ...
- Pyinstaller 打包exe 报错 “failed to execute script XXX“的一种解决方案
Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案 参考文章: (1)Pyinstaller 打包exe 报错 & ...
- python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退
问题描述: python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退,并提示no module named 'pyproj.datadir' 解决方法: 闪退 ...
最新文章
- 超详细派克斯使用安装教程
- Go 语言编程 — 基本数据类型
- java文件格式_Java Class文件格式详解
- Win下通过 Navica t连接Ubuntu下MySQL数据库
- subprocess中执行git命令报告no such file or directory一例
- 特定领域因果事件图谱构建项目
- 业务gis 怎么让别的开发人员不需要懂gis就可以搞开发? (五)
- Java基础教程——字节流
- python orderdict_Python OrderedDict字典排序方法详解
- 配置LVS + Keepalived高可用负载均衡集群之图文教程
- Atitit springboot 全局异常处理 1.1.@ControllerAdvice 不起作用 public class ExceptionHandle { @ExceptionHand
- stm32车牌识别_道路千万条,方案这一条,带你深入了解车牌号识别系统
- 淘宝优惠券商城赚钱是真的吗?购物最便宜的app
- 【上岸合肥工业大学】计算机考研经验分享(初试+复试)
- 红孩儿编输器的模块设计14
- jenkins调查总结
- 三星android10手势,三星全面屏手势终于来了!看着有点熟悉
- pycharm IDE中英文切换
- Zemax操作--4(公差问题)
- 黑马程序员 面向对象总结2
热门文章
- 阿里云服务器买完不知道如何使用(新手入门教程)
- ActiveMQ反序列化漏洞CVE-2015-5254复现
- YAPI工具入门手册
- centos7安装polygraph
- 广域网宽带接入技术三PON技术
- 解决vs中没有为 VSFilter.dll 加载的符号文件问题
- 微擎安装模块出现 Connection timed out after 60000 milliseconds
- 计算机网络安全及防火墙技术任务书,《毕业设计(论文)-计算机网络安全技术分析》.doc...
- 《企业管理学》管理理论的产生于发展知识点总结
- 让Yahoo!奇摩害怕的无名小站