前言: 近期使用PySimpleGUI开发了一款开发者工具X-助手工具,意打造成平常开发助手,无论是图片还是网址的处理等等都需要这一个工具即可,无需在网上找各个网站去找解决方案, 对于GUI的打包工具,在Python领域pyinstaller较为流行
工具样例:
安装:
pip install -U pyinstaller
使用:
常见问题:
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.
标签:__,pyinstaller,Python,py,dll,pyzbar,False,line,打包 From: https://www.cnblogs.com/xingxia/p/18438827/python_pyinstaller