背景

  1. Python 3.7.7
  2. PyCharm 2019.1.1
  3. PyInstaller 4.10

约定

  1. 下文把工程文件夹暂且称为“入口点目录”(即存放 venv 的目录)

  2. 如果 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>
    
  3. 假设程序入口点所在文件 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 之过程简记相关推荐

  1. python打包exe黑框一闪而过,解决pyinstaller打包exe文件出现命令窗口一闪而过的问题...

    用pyinstaller打包的exe文件打开时,命令窗口一闪而过,并且未出现GUI界面,也看不到错误信息,然后去网上搜相关的信息,最多的两种说法: 1.添加raw_input()或者os.system ...

  2. 解决pyinstaller打包exe文件过大(菜鸟一刀切傻办法)

    pyinstaller打包exe文件过大 作为认真学习了Python两个多月的小白,觉得python还是有很多玄学,一直搞不懂明明一毛一样的步骤,为什么我用pyinstaller打包出来的exe有30 ...

  3. Py打包应用程序(zipapp打包.pyz文件、pyinstaller打包exe文件)

    ''' Py打包应用程序.py (zipapp打包.pyz文件.pyinstaller打包exe文件)注意: 一.zipapp模块 打包档案包 的 命令行语法: python -m zipapp so ...

  4. Pyinstaller 打包exe附带资源,运行时自动解压所需资源(图片文本音频等)

    前言: 用Pyinstaller 打包exe时,有时候得附带上一些资源,才能让程序不那么单调. 在网上也有很多把依赖文件打包进exe的方法,不过都只能打包一些图片或者文本而已. 还有一个就是通过修改P ...

  5. pyinstaller打包exe(32位和64位)和运行太慢等问题解决

    pyinstaller打包exe(32位和64位)和运行太慢等问题解决 文章目录 pyinstaller打包exe(32位和64位)和运行太慢等问题解决 前言 一.pyinstaller的安装 二.p ...

  6. Pyinstaller 打包exe 报错 failed to execute script XXX的一种解决方案

    最近用PyQt5写了一个界面小程序,需要打包成exe给到其他windows上使用,一开始使用python 3.7 64位,用pyinstaller打包exe,在64位机上运行正常. 但是目标电脑是32 ...

  7. (1)python pyinstaller打包exe添加版本信息(2)python获取exe版本信息(3)pyqt5开发exe添加检查版本更新功能

    笔者总结不容易点个关注吧    一键三联哦!       感谢您! python pyinstaller打包exe添加版本信息 打包并添加版本信息 注意!这里有个坑 如果第二次要修改版权信息 要将fi ...

  8. Pyinstaller打包exe(包括打包资源文件 绝不出错版)

    Pyinstaller打包exe(包括打包资源文件 绝不出错版) 依赖包及其对应的版本号 PyQt5 5.10.1 PyQt5-Qt5 5.15.2 PyQt5-sip 12.9.0 pyinstal ...

  9. Pyinstaller 打包exe 报错 “failed to execute script XXX“的一种解决方案

    Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案 参考文章: (1)Pyinstaller 打包exe 报错 & ...

  10. python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退

    问题描述: python 利用pyinstaller 编译.exe文件过程中编写完的.exe文件执行过程中闪退,并提示no module named 'pyproj.datadir' 解决方法: 闪退 ...

最新文章

  1. 超详细派克斯使用安装教程
  2. Go 语言编程 — 基本数据类型
  3. java文件格式_Java Class文件格式详解
  4. Win下通过 Navica t连接Ubuntu下MySQL数据库
  5. subprocess中执行git命令报告no such file or directory一例
  6. 特定领域因果事件图谱构建项目
  7. 业务gis 怎么让别的开发人员不需要懂gis就可以搞开发? (五)
  8. Java基础教程——字节流
  9. python orderdict_Python OrderedDict字典排序方法详解
  10. 配置LVS + Keepalived高可用负载均衡集群之图文教程
  11. Atitit springboot 全局异常处理 1.1.@ControllerAdvice 不起作用 public class ExceptionHandle { @ExceptionHand
  12. stm32车牌识别_道路千万条,方案这一条,带你深入了解车牌号识别系统
  13. 淘宝优惠券商城赚钱是真的吗?购物最便宜的app
  14. 【上岸合肥工业大学】计算机考研经验分享(初试+复试)
  15. 红孩儿编输器的模块设计14
  16. jenkins调查总结
  17. 三星android10手势,三星全面屏手势终于来了!看着有点熟悉
  18. pycharm IDE中英文切换
  19. Zemax操作--4(公差问题)
  20. 黑马程序员 面向对象总结2

热门文章

  1. 阿里云服务器买完不知道如何使用(新手入门教程)
  2. ActiveMQ反序列化漏洞CVE-2015-5254复现
  3. YAPI工具入门手册
  4. centos7安装polygraph
  5. 广域网宽带接入技术三PON技术
  6. 解决vs中没有为 VSFilter.dll 加载的符号文件问题
  7. 微擎安装模块出现 Connection timed out after 60000 milliseconds
  8. 计算机网络安全及防火墙技术任务书,《毕业设计(论文)-计算机网络安全技术分析》.doc...
  9. 《企业管理学》管理理论的产生于发展知识点总结
  10. 让Yahoo!奇摩害怕的无名小站