项目是用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环境试试。