Python打包工具之pyinstaller
前言: 近期使用PySimpleGUI开发了一款开发者工具X-助手工具,意打造成平常开发助手,无论是图片还是网址的处理等等都需要这一个工具即可,无需在网上找各个网站去找解决方案, 对于GUI的打包工具,在Python领域pyinstaller较为流行
工具样例:



安装:
pip install -U pyinstaller
使用:
1.第一次打包
pyinstaller -F -w -i icon.ico main.py -n X-助手工具 #-F 选项,创建一个打包的执行文件;
# -w 选项,执行文件运行过程中,不出现命令行窗口;
# -n X-助手工具,指定输出的可执行文件名为 "X-助手工具"。
# -i icon.ico,指定图标文件,打包时将使用此图标;
# 更多选项,参见 https://pyinstaller.org/en/stable/usage.html#options
打包完成之后, 在当前目录下会生成一个.spec配置文件, 打包好的exe文件在dist目录之下
2.使用配置文件进行后续打包
pyinstaller X-tools.spec # 直接指定该配置文件即可
3.配置项
# -*- mode: python ; coding: utf-8 -*- dll_path = 'E:\\python-project\\x-helper\\env\\Lib\\site-packages\\pyzbar\\'
add_files = [ ('fonts\\font.ttf', 'fonts'), ('images\\*.png', 'images'), ('images\\flappy.ico', 'images'), ('audios\\*.wav', 'audios'), ]
a = Analysis(
['main.py'], # 项目的入口文件
pathex=[], # 当前项目的所在绝对路径
binaries=[(dll_path+'libiconv.dll', '.'), (dll_path+'libzbar-64.dll', '.'),], # 二进制文件
datas=add_files, # 存放所有资源文件,每个文件是一个2元组元素
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure) exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='X-助手工具', # 最终软件的名称
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False, # 若是true的话, 同时会打开一个cmd窗口,不影响原有程序运行
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['icon.ico'], # 设置程序图标,绝对路径 ico格式文件(16*16)
)
常见问题:
1.在识别二维码过程中用到了pyzbar这个库,开发环境可以正常使用, 但是在打包完之后,打开确实报错的状态
Traceback (most recent call last):
File "pyzbar\zbar_library.py", line 58, in load
File "pyzbar\zbar_library.py", line 50, in load_objects
File "pyzbar\zbar_library.py", line 51, in <listcomp>
File "ctypes\__init__.py", line 447, in LoadLibrary
File "PyInstaller\loader\pyimod04_ctypes.py", line 56, in __init__
pyimod04_ctypes.PyInstallerImportError: Failed to load dynlib/dll 'libiconv.dll'. Most probably this dynlib/dll was not found when the application was frozen. During handling of the above exception, another exception occurred: Traceback (most recent call last):
File "PyInstaller\loader\pyimod04_ctypes.py", line 54, in __init__
File "ctypes\__init__.py", line 369, in __init__
FileNotFoundError: Could not find module 'D:\代码\weebot\main\pyzbar\libiconv.dll'. Try using the full path with constructor syntax. The above exception was the direct cause of the following exception:
解决:
第一种方法:在自己的虚拟环境中找到该模块的dll(libiconv.dll+libzbar-64.dll),手动复制粘贴到打包后目录(dist)即可:但是这种拷贝到另外一个地方使用的时候,这些dll文件也要一并拷贝过去,不够方便,或者将其加入全局变量使用

第二种方法:修改spec文件的时候设置好导入位置,打包时会自动识别

# -*- mode: python ; coding: utf-8 -*- dll_path = 'E:\\python-project\\x-helper\\env\\Lib\\site-packages\\pyzbar\\' a = Analysis(
['main.py'],
pathex=[],
binaries=[(dll_path+'libiconv.dll', '.'), (dll_path+'libzbar-64.dll', '.'),],
datas=[],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
noarchive=False,
optimize=0,
)
pyz = PYZ(a.pure) exe = EXE(
pyz,
a.scripts,
a.binaries,
a.datas,
[],
name='X-助手工具',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
upx_exclude=[],
runtime_tmpdir=None,
console=False,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
icon=['icon.ico'],
)
2. FileNotFoundError: Could not find module '你的路径\Python\Python38\site-packages\pyzbar\libzbar-64.dll' (or one of its dependencies). Try using the full path with constructor syntax
解决: 需要安装visual C++的库
下载地址:Visual C++ Redistributable Packages for Visual Studio 2013
进入之后,拉到下面可以看到下载的按钮,下载完之后安装即可!:

3.
Python打包工具之pyinstaller的更多相关文章
- $python打包工具pyinstaller的用法
pyinstaller是一个很好用的python打包工具,在Windows环境下可以将python脚本打包成一个exe可执行文件,并且脚本中所依赖的各种第三方库在打包时候都会被统一处理到一起,这样打包 ...
- Python打包EXE神器 pyinstaller
最近由于项目需要,以前的python文件需要编辑为EXE供前端客户使用. 由于最早接触的是distutils,所以一开始准备使用distutils和py2exe搭配来进行python的exe化,也就是 ...
- python打包exe之pyinstaller用法
pyinstaller可以将python写好的脚本打包成exe文件,方便windows用户在没有python环境下运行.这个程序完全跨平台,包括Windows.Linux.Mac OS X等多个操作系 ...
- Python打包工具setuptools的使用
将我们写的Python程序发布成包后,可以使其能够安装使用. 在项目上测试的时候,某些情况下,可以将Python打包,然后上传到测试服务器,安装测试. setuptools是常用的打包工具. 一个简单 ...
- python打包工具pyinstaller的使用
安装PyInstaller pip install pyinstaller 安装完后,检查安装成功与否: pyinstaller --version 安装成功后,就可以使用下面的命令了: pyinst ...
- python打包工具 --- pyinstaller
安装 安装python并添加到环境变量之后,在终端执行如下命令即可: pip install pyinstaller 截图如下: 若安装失败,可到: https://www.lfd.uci.edu/~ ...
- 基于pyinstaller的python打包工具
以下是软件链接:https://mysecreat.lanzoub.com/iZPGf0swgtbc 软件功能:可以对py文件进行打包,功能基于pyinstaller模块,因此需要安装python环境 ...
- Python打包工具
打包Python应用,使用工具: 1.Linux和Windows下,使用pyinstaller pyinstaller -F -w XXX.py 在当前文件夹下生成两个文件夹:build .dist ...
- python打包工具distutils、setuptools分析
在上一篇博文中总结了python中导入包,安装包一条完整的线路.其中有一个有意思的知识点,安装包的方式有很多种,模块和包管理中打包,发布,安装也是值得研究的内容. python中安装包的方式有很多种: ...
- python打包工具distutils、setuptools的使用
python中安装包的方式有很多种: 源码包:python setup.py install 在线安装:pip install 包名(linux) / easy_install 包名(window) ...
随机推荐
- WebShell流量特征检测_中国菜刀篇
80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测. 什么是一句话木马? 1.定义 顾名思义就是执行恶意指 ...
- .net core 负载均衡取客户端真实IP
一个网关代码(.net core 3.1),部署到负载均衡器有故障,发现获取到的客户端IP都是内网IP了,负载均衡用的是阿里云的SLB . 记录一下修改过程 在Strup.cs 中的 Configur ...
- 待补 重要思考:求给无向图定向使得其变为DAG的方案数
今天比赛考到了,不会,丢了 100 分. rk2,380 -> rk15,280 别问为什么 T4 没过,因为不会 T2. 方法一 \(O(3^n)\) 令 \(f_S\) 为子集 \(S\) ...
- Angular 18+ 高级教程 – Routing 路由 (原理篇)
修改中... 前言 Angular 是 Single Page Application (SPA) 单页面应用,所谓的单页面是站在服务端的角度看,不管游览器请求什么路径,一律返回 index.html ...
- CSP初赛知识点:Linux 系统
CSP初赛知识点:Linux 系统 前言 近年 CSP 初赛几乎前 5 道选择题都有一两道有关 Linux 系统的使用,所以作为备战 CSP-J/S 2024 的资料,整理下来啦. 祝各位今年所有考试 ...
- uniCloud
https://doc.dcloud.net.cn/uniCloud/ 什么是uniCloud uniCloud推出了opendb,包含了大量的开源数据库模板,常见数据表无需自己设计 uniCloud ...
- [TK] 理想的正方形
题目描述 有一个整数组成的矩阵,现请你从中找出一个指定边长的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 题目分析 其实这道题和滑动窗口很像,而滑动窗口使用优先队列解决. 我们都知道优先队 ...
- 智和信通搭建高可靠、真稳定IT运维平台,助力能源行业高效生产
在能源企业信息化高度发展的背景下,北京智和信通有限公司推出全栈式运维管控平台--"智和网管平台",助力能源企业搭建高可靠.真稳定的IT运维平台,实现高效稳定生产. 信息化飞速发展, ...
- 数据库日常实操优质文章分享(含Oracle、MySQL等) | 2023年2月刊
本文为大家整理了墨天轮数据社区2023年2月发布的优质技术文章,主题涵盖Oracle.MySQL.PostgreSQL等数据库的环境搭建.故障处理等日常实践操作,以及概念梳理.常用脚本等总结记录,分享 ...
- 数据库故障处理优质文章汇总(含Oracle、MySQL、MogDB等)
数据库告警.紧急问题处理这些项目对于大多数朋友来讲应该不陌生了.从墨天轮社区整理的"最受DBA欢迎的技术文档合辑"系列中可以发现,大家对"故障诊断专题"的热情居 ...
