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) ...
随机推荐
- 探索AI人才培养新范式,合合信息与同济大学软件学院签署产教融合人才培养协议
随着科学技术的发展,促进人工智能产业与高校人才培养相融合,正成为业界关注的焦点.7月3日,上海合合信息科技股份有限公司(以下简称:合合信息)与同济大学软件学院"产教融合人才培养签约暨创新实践 ...
- Asp.net core 学习笔记之 authen + autho + oidc + oauth + spa 第九篇 (external login)
External login 就是指通过 Google, Microsoft, Facebook account 做登入. https://docs.microsoft.com/en-us/aspne ...
- 大一下的acm生活
在一个名气不大的211学校刷题的日常. 感觉这些算法题好难啊! 最近有好多实验室要招新,不知道该怎么办,自己只想就业,并不想升学,好烦! 真枯燥,好无聊. 现在要学习相关的网页设计和网站建设,例如配色 ...
- 大模型训练:K8s 环境中数千节点存储最佳实践
今天这篇博客来自全栈工程师朱唯唯,她在前不久举办的 KubeCon 中国大会上进行了该主题分享. Kubernetes 已经成为事实的应用编排标准,越来越多的应用在不断的向云原生靠拢.与此同时,人工智 ...
- 优质技术文章分享 | 首届【MogDB数据库征文活动】进行中,期待您的参与
2022年6月30日,MogDB 3.0版本正式发布,基于2.1版本进一步增强,集成了openGauss 3.0.0版本的新增特性,并融合了云和恩墨的创新特性研发,持续助力用户达成安稳易用的企业级数据 ...
- threejs - js库 gui 的使用 调试开发3D效果
// 导入 threejs import * as THREE from "three"; import { OrbitControls } from "three/ex ...
- wpf基本布局控件 -- 01
<Window x:Class="WpfApp1.MainWindow" xmlns="http://schemas.microsoft.com/winfx/200 ...
- webpack中 ,有哪些常见的Loader?他们是解决什么问题的?
1. css-loader 翻译css ,可以把sass / less 代码翻译成 css 代码 : 2. imgage-loader 加载并压缩图片文件 3. source-map-loader 加 ...
- 使用svn保存markdown文档
使用svn管理md文档时,使用谷歌直接访问出现中文乱码,解析格式错误的问题,可以通过安装谷歌浏览器的插件解决. 一.解决格式解析错误的问题 安装插件 Markdown Preview Plus ,安装 ...
- 4:Exchange安装后的任务
4:Exchange安装后的任务 安装后的任务: 第一:证书的申请安装,分配服务略 注意项:如果是通配符证书,不能直接分配pop的服务 第二:虚拟目录的配置 Exchang ...
