【解决方案】Pyinstaller打包exe策略(简单实用)
场景说明
在业务场景中, 经常需要Python开发一些小程序/脚本/GUI界面,进行简单的项目测试或未安装Python 的小伙伴们使用。
使用Pyinstaller将Python脚本或者项目打包,生成可执行的.exe文件。
Pyinstaller是一个很不错的免费打包工具,支持Windows,Linux和MacOS,完美支持32位和64位系统。
除了Pyinstaller, 还可以使用py2exe进行打包
pyinstaller安装
pip install pyinstaller
打包参数
# 常用打包参数
# -F -D互斥参数
-F 打包成一个exe文件,小项目可以采用,打开比较慢,多个.py打包时不能使用
-D 默认参数,打包结果放入到创建的文件夹中,可以看到里面有很多的依赖文件 # -w -c互斥参数
-w 使用项目的GUI界面,无cmd控制台
-c 默认参数,使用cmd控制台 如果打包文件执行报错,可尝试用-c 显示控制台 -n 执行项目的名称,默认.py的文件名
-i 将ico图标打包到exe文件中 --hidden-import 打包时导包信息
# 打包PyQt项目强烈建议 带上以下参数
--hidden-import PyQt5.sip # 打包命令示例
# 在项目的根目录下执行打包命令
pyinstaller -w xxx.py --hidden-import PyQt5.sip # 打包结果输出在项目根目录下的 dist文件夹中
# 不建议使用 -F打包成一个exe文件 所谓:打包一时爽,打开5秒钟
# 非-F命令下, 静态资源、建好的Sqlite数据库可以直接放入dist中 生成的文件夹中
说明
- Pyinstaller只是将Python解释器和脚本打包成一个可执行文件, 不同于编译成真正的机器码。所以代码的运行效率是降低的,只是解决了小白用户的操作难度。
- 打包时会分析项目的依赖,并将相关的依赖打包进来,并进行加密处理
- 不同的操作系统, 需要在不同的操作系统进行打包。
debug
控制台debug
- 在本地运行成功, 建议在第一次打包exe时使用 -c命令,这样可以在控制台中显示可能的报错信息。
- 如果打包时没有用-c不会出现控制台或者控制台一闪而过,看不到报错信息, 可以在cmd命令行窗口执行exe文件
fatal error faild to execute script file
- Pyinstaller打包时有些库没有打包进去,可以将报错信息中的库通过 --hidden-import 报错的包 的进行打包
【解决方案】Pyinstaller打包exe策略(简单实用)的更多相关文章
- Pyinstaller 打包exe 报错 "failed to execute script XXX"的一种解决方案
最近用PyQt5写了一个界面小程序,需要打包成exe给到其他windows上使用,一开始使用python 3.7 64位,用pyinstaller打包exe,在64位机上运行正常. 但是目标电脑是32 ...
- pyinstaller 打包exe程序读不到配置文件No such file
挺久没更新博客的,一来之前是觉得才疏学浅,记录下来的太简单没人看.二来时间上不是很充裕(不是借口,有时间打游戏,没时间总结) 偶然有一次发现同事在搜索解决问题的时候正在看我博客的解决思路,很奇妙的感觉 ...
- 利用PyInstaller打包exe文件
前言 平常我们通过Python写完一些小脚本之后,如果使用不频繁的话,一般会选择在DOS界面直接跑脚本,或者在IDE中运行.但当我们需要频繁使用某些脚本,或者在没有Python环境的机器上也能顺利运行 ...
- Pyinstaller打包exe,丢失图标等问题
Pyinstaller打包exe,丢失图标等问题 一.原因 exe运行时会解压一个名为'_MEI*'的资源文件夹到电脑的临时目录,程序结束时删除. 程序里使用'\图标.png'这样的路径,exe运行时 ...
- Python: pyinstaller打包exe(含file version信息)
最近项目上一直都是用Spyder直接运行.py文件的方式来执行每日的自动化程序,每天都要手动去点击Run来执行一次,所以考虑把.py文件直接打包成exe,然后用windows的task schedul ...
- python pyinstaller 打包exe报错
今天用python 使用pyinstaller打包exe出现错误 环境pyqt5 + python3.6 在导入pyqt5包之前加上如下代码 import sysimport osif hasattr ...
- pyinstaller打包exe文件,运行时一闪而过
pyinstaller打包exe文件出现命令窗口一闪而过 原因:exe运行过程中出错了,解决这些错误就可以了 解决方法: 通过 cd path >> xxx.exe 在命令行中运行exe文 ...
- pyinstaller 打包exe可执行文件
Python打包EXE方法之一 一.安装Pyinstaller 1.安装pywin32 下载安装文件:查找到跟自己适用的python版本及window系统版本匹配的pywin32,下载后安装 使用pi ...
- pyinstaller打包exe程序各种坑!!!
pyinstaller打包python成exe可执行程序,各种报错,各种坑,在次记录下 一.pyinstaller打包报错for real_module_name, six_moduleAttribu ...
随机推荐
- python学习笔记(十五)-unittest单元测试的一个框架
unittest 单元测试的一个框架什么框架 一堆工具的集合. TestCase TestSuite 测试套件,多个用例在一起 TestLoader是用来加载TestCase到TestSuite中的 ...
- 你会阅读appium官网文档吗
高效学习appium第一步,学会查看appium官方文档.如果能把appium文档都通读一遍,对学习appium大有益处. 而能做到通读appium官方文档的人,想必不是很多,刚开始学习appium的 ...
- python从网络摄像头获取rstp视频流并截取图片保存
import cv2 def get_img_from_camera_net(folder_path): cap = cv2.VideoCapture("rtsp://admin:a ...
- Redis-Cluster分片扩容
redis分片分片场景在业务量相对较小的时候,可以将所有数据都存到一台机器上,只使用redis单机模式,不存在分片问题.如果业务的数据量超过一台物理机器的内存大小时,则会面对扩展问题,需要多台机器去存 ...
- 鸿蒙内核源码分析(中断管理篇) | 江湖从此不再怕中断 | 百篇博客分析OpenHarmony源码 | v44.02
百篇博客系列篇.本篇为: v44.xx 鸿蒙内核源码分析(中断管理篇) | 江湖从此不再怕中断 | 51.c.h .o 硬件架构相关篇为: v22.xx 鸿蒙内核源码分析(汇编基础篇) | CPU在哪 ...
- 关于panic ,主协程的recover 是无法获取 子协程的panic 的
一.子协程的panic,只能在子协程中处理 下面的代码,main 函数 无法获取panic package main import ( "fmt" "time" ...
- WPF进阶技巧和实战03-控件(5-列表、树、网格04)
ListView控件 ListView继承自简单的没有特色的ListBox,增加了对基于列显示的支持,并增加了快速切换视图或显示模式的能力,而不需要重新绑定数据以重新构建列表. ListView类继承 ...
- Go语言之结构体与方法
一.结构体 结构体是一系列属性的集合(类似于 Python 中的类) 1.结构体的定义与使用 // 定义 type Person struct { Name string Age int Sex st ...
- Linux文件系统与inode、Block笔记
Linux文件系统与inode.Block笔记 在Linux下一切都是文件,无论是设备还是接口,亦或是网卡等均被抽象成了文件,并且有相关的内核代码进行调度.然而,在一切都是文件的前提下,最需要进行探讨 ...
- 使用ffmpeg进行视频图片提取
环境:windows10-x64 ffmpeg的功能很强大,可以进行音频和视频的处理,这里记录下需要从视频文件提取图片的情况. ffmpeg官方地址:https://www.ffmpeg.org/使用 ...