pyinstaller打包pyqt 找不到Qtcore dll

项目是用python, pyqt写的,今后需要打包成exe文件,今天尝试了一下,错误百出,查了很多资料,试了好几种方法都不成功。仿佛又回到了被动态链接库折磨的阴影中。。

错误:

192250 INFO: Loading module hook "hook-pyproj.py"...
192254 INFO: Loading module hook "hook-PyQt5.py"...
192255 INFO: Loading module hook "hook-PyQt5.Qt.py"...
192256 INFO: Loading module hook "hook-PyQt5.QtCore.py"...
Traceback (most recent call last):
  File "<string>", line 2, in <module>
ImportError: DLL load failed while importing QtCore: 找不到指定的程序。
Traceback (most recent call last):
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\runpy.py", line 194, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\runpy.py", line 87, in _run_code
    exec(code, run_globals)
  File "C:\Users\hp\anaconda3\envs\pythonProject\Scripts\pyinstaller.exe\__main__.py", line 7, in <module>
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\__main__.py", line 94, in run
    run_build(pyi_config, spec_file, **vars(args))
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\__main__.py", line 46, in run_build
    PyInstaller.building.build_main.main(pyi_config, spec_file, **kwargs)
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\building\build_main.py", line 791, in main
    build(specfile, kw.get('distpath'), kw.get('workpath'), kw.get('clean_build'))
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\building\build_main.py", line 737, in build
    exec(text, spec_namespace)
  File "<string>", line 6, in <module>
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\building\build_main.py", line 213, in __init__
    self.__postinit__()
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\building\datastruct.py", line 161, in __postinit__
    self.assemble()
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\building\build_main.py", line 472, in assemble
    module_hook.post_graph()
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\building\imphook.py", line 410, in post_graph
    self._load_hook_module()
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\building\imphook.py", line 376, in _load_hook_module
    self._hook_module = importlib_load_source(
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\compat.py", line 744, in importlib_load_source
    return mod_loader.load_module()
  File "<frozen importlib._bootstrap_external>", line 462, in _check_name_wrapper
  File "<frozen importlib._bootstrap_external>", line 962, in load_module
  File "<frozen importlib._bootstrap_external>", line 787, in load_module
  File "<frozen importlib._bootstrap>", line 265, in _load_module_shim
  File "<frozen importlib._bootstrap>", line 702, in _load
  File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 783, in exec_module
  File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\hooks\hook-PyQt5.QtCore.py", line 15, in <module>
    binaries = qt_plugins_binaries('codecs', namespace='PyQt5')
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 65, in qt_plugins_binaries
    pdir = qt_plugins_dir(namespace=namespace)
  File "c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages\PyInstaller\utils\hooks\qt.py", line 39, in qt_plugins_dir
    raise Exception('Cannot find {0} plugin directories'.format(namespace))
Exception: Cannot find PyQt5 plugin directories

环境如下:

Name: PyInstaller
Version: 3.3.1
Summary: PyInstaller bundles a Python application and all its dependencies into a single package.
Home-page: http://www.pyinstaller.org
Author: Giovanni Bajo, Hartmut Goebel, David Vierra, David Cortesi, Martin Zibricky
Author-email: pyinstaller@googlegroups.com
License: GPL license with a special exception which allows to use PyInstaller to build and distribute non-free programs (including commercial ones)
Location: c:\users\hp\anaconda3\envs\pythonproject\lib\site-packages
Requires: setuptools, pefile, future, macholib

Name: PyQt5
Version: 5.15.2
Summary: Python bindings for the Qt cross platform application toolkit
Home-page: https://www.riverbankcomputing.com/software/pyqt/
Author: Riverbank Computing Limited
Author-email: info@riverbankcomputing.com
License: GPL v3
Location: c:\users\hp\appdata\roaming\python\python38\site-packages
Requires: PyQt5-sip
Required-by: pyqt5-tools, pyqt5-plugins

 

打包使用的命令:

pyinstaller --path C:\Users\hp\AppData\Roaming\Python\Python38\site-packages\PyQt5\Qt\bin;C:\Users\hp\Anaconda3\Lib;C:\Users\hp\Anaconda3\Lib\site-packages --hidden-import PyQt5.sip -c -D main.py

 

我很确定,那些dll就在pyqt5/qt/bin的目录下! 我已经加入搜索的path了,就是找不到!

我尝试过的方法:

1. 把dll加入dist中

2. 用pip重装pyqt5, 更换pyinstaller到最新版(又换回来了)

3. 把Anaconda3的Lib\bin加入到环境变量

您好,请问解决了吗?我也遇到了同样的问题

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

可能跟虚拟环境有关,缺少某些dll。

1、检查一下是否缺少Python3.dll。

2、用DLL 依赖检查工具 Dependency Walker检查一下。

3、用原生Python环境试试。