使用pyinstaller打包QT5窗口程序时报如下错误:(pyinstaller -F -w main.py)
File "C:\Users\某某某\PycharmProjects\某某某程序\venv\lib\site-packages\PyInstaller\hooks\hook-PyQt5.QtGui.py", line 14, in <module>
hiddenimports, binaries, datas = add_qt5_dependencies(__file__)
File "C:\Users\某某某\PycharmProjects\某某某程序\venv\lib\site-packages\PyInstaller\utils\hooks\qt\__init__.py", line 845, in add_qt_dependencies
return qt_info.collect_module(module_name)
File "C:\Users\某某某\PycharmProjects\某某某程序\venv\lib\site-packages\PyInstaller\utils\hooks\qt\__init__.py", line 421, in collect_module
binaries += self.collect_plugins(plugin_type)
File "C:\Users\某某某\PycharmProjects\某某某程序\venv\lib\site-packages\PyInstaller\utils\hooks\qt\__init__.py", line 485, in collect_plugins
raise Exception(f"Qt plugin directory '{plugin_src_dir}' does not exist!")
Exception: Qt plugin directory 'C:/Users/¶ÅÇ춫/PycharmProjects/ú̿¼ì²âÊýÖµ´¦Àí³ÌÐò/venv/lib/site-packages/PyQt5/Qt5/plugins' does not exist!
具体如图
处理方法:
安装报错信息找到
C:\Users\某某某\PycharmProjects\某某某程序\venv\lib\site-packages\PyInstaller\utils\hooks\qt\__init__.py,第485行,
# 添加如下:
plugin_src_dir = "C:\\Users\\某某某\\PycharmProjects\\某某某程序\\venv\\lib\\site-packages\\PyQt5\\Qt5\\plugins"
通过手动添加正确路径的方式即可解决问题。
def collect_plugins(self, plugin_type):
"""
Collect all plugins of the specified type from the Qt plugin directory.
Returns list of (src, dst) tuples.
"""
# Ensure plugin directory exists
# 第485行
plugin_src_dir = self.location['PluginsPath']
# 添加如下:
plugin_src_dir = "C:\\Users\\某某某\\PycharmProjects\\某某某程序\\venv\\lib\\site-packages\\PyQt5\\Qt5\\plugins"
if not os.path.isdir(plugin_src_dir):
raise Exception(f"Qt plugin directory '{plugin_src_dir}' does not exist!")
# Collect all shared lib files in plugin type (sub)directory
plugin_files = misc.dlls_in_dir(os.path.join(plugin_src_dir, plugin_type))