小编J. *_*Doe的帖子

PyInstaller; “找不到或加载Qt平台插件“ Windows”

我的PyInstaller规格:

# -*- mode: python -*-

block_cipher = None


a = Analysis(['test.py'],
             pathex=['C:\\Users\\admin\\compile'],
             binaries=[('C:\\Python361\\Lib\\site-packages\\PyQt5\\Qt\\plugins\\platforms\\qwindows.dll', 'qwindows.dll')],
             datas=[],
             hiddenimports=[],
             hookspath=[],
             runtime_hooks=[],
             excludes=[],
             win_no_prefer_redirects=False,
             win_private_assemblies=False,
             cipher=block_cipher)

pyz = PYZ(a.pure, a.zipped_data,
             cipher=block_cipher)
exe = EXE(pyz,
          a.scripts,
          a.binaries,
          a.zipfiles,
          a.datas,
          name='test',
          debug=False,
          strip=False,
          upx=False,
          runtime_tmpdir=None,
          console=False , icon='icon.ico')
Run Code Online (Sandbox Code Playgroud)

所以我遇到了一个问题,我将使用pip的最新版本的PyInstaller编译我的PyQt5 5.8.2(使用Python 3.6.1)程序,并且可以正常工作!静态链接的onefile可执行文件在我的计算机上可以运行所有Qt文件。

但是随后,我在尚未设置Qt环境的任何计算机或虚拟机上对其进行了测试,并且由于“找不到或加载Qt平台插件'windows'”错误而在启动时崩溃。如果您看一下规格,您会发现我尝试将DLL手动存储在二进制列表中,因此PyInstaller会将其存储在可执行文件中,但这没有用。

我想知道我需要更改什么,这样我才可以编译我的应用程序,而不必执行将可执行文件文件夹中的platform文件夹包括在内的操作(​​我希望所有内容都在可执行文件中),是否会如此简单?我没有意识到规范文件中的更改,以便将DLL存储在可执行文件中?

顺便说一句,这不是重复的。我查看了其他一些问题,所有这些问题要么针对不同类型的应用程序,要么解决方案是将DLL降级或存储在文件夹中,但我不能做任何一个。

编辑:所以我将其更改为onedir只是为了查看它是否甚至在其中,并且qwindows.dll在文件夹内。还有一个qt5_plugins文件夹,其中包含一个Platforms文件夹,其中也包含一个qwindows.dll。那怎么不检测dll呢?

qt pyinstaller static-linking python-3.x pyqt5

6
推荐指数
2
解决办法
4436
查看次数

标签 统计

pyinstaller ×1

pyqt5 ×1

python-3.x ×1

qt ×1

static-linking ×1