如何在python中的“导入错误:导入时DLL加载失败”中找到哪个DLL失败?

a.t*_*.t. 12 python debugging dll anaconda

语境

是否有命令可以增强接收到的错误消息,以便 python 显示它.dll找不到的文件?

对于错误:

python test_cv2.py
Traceback (most recent call last):
  File "test_cv2.py", line 1, in <module>
    import cv2
  File "E:\Anaconda3\envs\py38\lib\site-packages\cv2\__init__.py", line 5, in <module>
    from .cv2 import *
ImportError: DLL load failed while importing cv2: The specified module could not be found.

(py38) E:\somepath>
Run Code Online (Sandbox Code Playgroud)

我想确定.dll实际上没有找到哪个文件。为此,我DependenciesGui.exe这个存储库下载并运行. 接下来,我喂DependenciesGui.execv2.cp38-win_amd64.pyd它指示api-ms-win-core-wow64-l1-1-1.dll丢失,等等。

我目前无法验证.dll报告丢失dependenciesGUI.exe的文件是否也是 python 3.8 在 anaconda 环境中找不到的文件。

一种隐式验证 python 3.8 丢失.dll文件与报告丢失的相同文件相同的方法是dependenciesGUI.exe将所有丢失的.dll文件下载并粘贴到../system32/. 然后检查错误消息是否消失/更改。但是,.dll报告丢失的文件之一是:api-ms-win-core-wow64-l1-1-1.dll我还没有找到(在线)。此外,我试图欺骗复制并重命名api-ms-win-core-wow64-l1-1-0.dll为,api-ms-win-core-wow64-l1-1-1.dll但(幸运的是)无法dpendenciesGUI.exe识别.dll找到的文件。

如何使 python 的错误消息/回溯明确提及哪个.dll文件(第一个.dll文件)未找到?

笔记

这不是解决xy-problem安装opencv.

mil*_*bar 0

简短回答:不。

虽然这可能不是完全不可能,但它需要绑定一个像dependenciesGUIPython中的工具,以便能够在给定的上下文中调用它(即考虑Python中dll的实际搜索路径和已加载的动态库) 。这将是大量的工作却收效甚微。确实,Windows 上的 Python>=3.8 中的默认搜索路径应该与 的非常相似dependenciesGUI,因此丢失的 dll 应该是相同的。就我个人而言,我正在为 Python 开发预编译的二进制发行版,到目前为止dependenciesGUI足以识别 Python 导入时丢失的库。