dll - Windows Pyinstaller ImportError:带有 PyQt5 的 DLL
问题描述
我只安装了一个版本的 Python。现在是 3.8。
where python
C:\Users\me\AppData\Local\Programs\Python\Python38\python.exe
C:\Users\me\AppData\Local\Microsoft\WindowsApps\python.exe
首先,我检查包含 PyQt5 的目录中的 dll 文件,并看到一个非常强大的 DLL 文件列表:
dir C:\Users\me\AppData\Local\Programs\Python\Python38\Lib\site-packages\PyQt5\Qt5\bin
Directory of C:\Users\me\AppData\Local\Programs\Python\Python38\Lib\site-packages\PyQt5\Qt5\bin
2021-05-22 03:52 PM <DIR> .
2021-05-22 03:52 PM <DIR> ..
2021-05-20 12:58 AM 317,208 concrt140.dll
2021-05-20 12:58 AM 4,173,928 d3dcompiler_47.dll
2021-05-20 12:58 AM 3,205,632 libcrypto-1_1-x64.dll
2021-05-20 12:58 AM 1,988,608 libeay32.dll
2021-05-20 12:58 AM 25,072 libEGL.dll
2021-05-20 12:58 AM 3,385,328 libGLESv2.dll
2021-05-20 12:58 AM 681,472 libssl-1_1-x64.dll
2021-05-20 12:58 AM 590,112 msvcp140.dll
2021-05-20 12:58 AM 31,728 msvcp140_1.dll
2021-05-20 12:58 AM 193,520 msvcp140_2.dll
2021-05-20 12:58 AM 20,923,392 opengl32sw.dll
2021-05-22 03:52 PM 58,384 python3.dll
2021-05-20 12:58 AM 547,824 Qt5Bluetooth.dll
2021-05-20 12:58 AM 6,023,664 Qt5Core.dll
2021-05-20 12:58 AM 436,720 Qt5DBus.dll
2021-05-20 12:58 AM 4,487,152 Qt5Designer.dll
2021-05-20 12:58 AM 7,008,240 Qt5Gui.dll
2021-05-20 12:58 AM 428,528 Qt5Help.dll
2021-05-20 12:58 AM 1,645,552 Qt5Location.dll
2021-05-20 12:58 AM 746,480 Qt5Multimedia.dll
2021-05-20 12:58 AM 102,384 Qt5MultimediaWidgets.dll
2021-05-20 12:58 AM 1,340,400 Qt5Network.dll
2021-05-20 12:58 AM 138,224 Qt5Nfc.dll
2021-05-20 12:58 AM 321,008 Qt5OpenGL.dll
2021-05-20 12:58 AM 315,888 Qt5Positioning.dll
2021-05-20 12:58 AM 109,552 Qt5PositioningQuick.dll
2021-05-20 12:58 AM 317,424 Qt5PrintSupport.dll
2021-05-20 12:58 AM 3,591,664 Qt5Qml.dll
2021-05-20 12:58 AM 438,768 Qt5QmlModels.dll
2021-05-20 12:58 AM 57,328 Qt5QmlWorkerScript.dll
2021-05-20 12:58 AM 4,148,720 Qt5Quick.dll
2021-05-20 12:58 AM 517,616 Qt5Quick3D.dll
2021-05-20 12:58 AM 117,232 Qt5Quick3DAssetImport.dll
2021-05-20 12:58 AM 225,776 Qt5Quick3DRender.dll
2021-05-20 12:58 AM 1,244,144 Qt5Quick3DRuntimeRender.dll
2021-05-20 12:58 AM 46,064 Qt5Quick3DUtils.dll
2021-05-20 12:58 AM 173,552 Qt5QuickControls2.dll
2021-05-20 12:58 AM 478,704 Qt5QuickParticles.dll
2021-05-20 12:58 AM 215,536 Qt5QuickShapes.dll
2021-05-20 12:58 AM 1,113,584 Qt5QuickTemplates2.dll
2021-05-20 12:58 AM 120,816 Qt5QuickTest.dll
2021-05-20 12:58 AM 82,416 Qt5QuickWidgets.dll
2021-05-20 12:58 AM 477,680 Qt5RemoteObjects.dll
2021-05-20 12:58 AM 205,808 Qt5Sensors.dll
2021-05-20 12:58 AM 75,760 Qt5SerialPort.dll
2021-05-20 12:58 AM 208,880 Qt5Sql.dll
2021-05-20 12:58 AM 330,736 Qt5Svg.dll
2021-05-20 12:58 AM 245,232 Qt5Test.dll
2021-05-20 12:58 AM 49,648 Qt5TextToSpeech.dll
2021-05-20 12:58 AM 134,128 Qt5WebChannel.dll
2021-05-20 12:58 AM 149,488 Qt5WebSockets.dll
2021-05-20 12:58 AM 78,320 Qt5WebView.dll
2021-05-20 12:58 AM 5,498,352 Qt5Widgets.dll
2021-05-20 12:58 AM 237,040 Qt5WinExtras.dll
2021-05-20 12:58 AM 213,488 Qt5Xml.dll
2021-05-20 12:58 AM 2,643,440 Qt5XmlPatterns.dll
2021-05-20 12:58 AM 361,984 ssleay32.dll
2021-05-20 12:58 AM 101,872 vcruntime140.dll
2021-05-20 12:58 AM 44,528 vcruntime140_1.dll
我运行以下 pyinstaller 命令,其中包含这些 DLL 文件的路径:
pyinstaller --onefile --log-level=DEBUG --path C:\Users\me\AppData\Local\Programs\Python\Python38\Lib\site-packages\PyQt5\Qt5\bin --upx-exclude "vcruntime140.dll" --hidden-import "PyQt5" --hidden-import "QtWidgets" test.py
这里是 Python 源代码test.py
。在我开始工作之前,这只是一个基本的进口清单:
import PyQt5
import PyQt5.QtWidgets
import PyQt5.QtGui
import PyQt5.QtCore
当我运行时test.exe
,它似乎完成了第一行import PyQt5
但第二行import PyQt5.QtWidgets
给出了以下错误:
test.exe
Traceback (most recent call last):
File "test.py", line 9, in <module>
ImportError: DLL load failed while importing QtWidgets: The specified module could not be found.
[11136] Failed to execute script test
当我查看构建的调试输出时,似乎找到了 DLL 路径,因为调试中有如下行:
19179 DEBUG: Analyzing C:\Users\me\AppData\Local\Programs\Python\Python38\Lib\site-packages\PyQt5\Qt5\bin\Qt5QmlModels.dll
19236 DEBUG: Skipping KERNEL32.dll dependency of Qt5QmlModels.dll
19238 DEBUG: Analyzing C:\Users\me\AppData\Local\Programs\Python\Python38\Lib\site-packages\PyQt5\Qt5\bin\Qt5Qml.dll
几天来,我一直在围绕这个问题转圈。有时当我重新启动 Windows 时,编译后会出现另一个错误pyinstaller
:
ModuleNotFoundError: No module named 'PyQt5.QtWidgets'
这很奇怪,因为我可以从 python>>
终端导入:
>>import PyQt5
>>import PyQt5.QtWidgets
>>
我已经尝试过关闭并打开 upx 的构建。
我如何才能成功构建它来导入 PyQt.QtWidgets?
解决方案
推荐阅读
- telegram - Telegram BOT API:如何更改照片(不是标题)
- iphone - 在 Swift 中获取 iPhone 日期和时间设置
- swift - 将 pod 更新到 Firebase 5.4 后的 Firebase 错误
- c# - 将正整数添加到 int 会导致它变为负数
- java - 在分布式缓存 l2 上使用 infinispan 和休眠进行连接锁定
- sql - 连接来自两个数字列的值 + 添加额外的 0
- elixir - 凤凰应用启动时调用函数
- amazon-web-services - AWS Sagemaker - “在数据路径中找到隐藏文件!在训练之前将其删除。”
- swift - 从 '(_) throws -> ()' 类型的抛出函数到非抛出函数类型 '(CallResult) -> Void' 的无效转换
- java - 如何从自定义视图中获取作业列表