Pybind11:尝试在Python解释器中导入* .pyd时出现“ ImportError:找不到DLL”

蒂姆·希尔特

.pyd在Visual Studio 2019(社区)中构建了一个程序,该程序提供了一些仅在LibRaw中提供的功能的包装器。解决方案成功编译,没有任何警告或错误。该项目使用LibRaw,OpenCV和pybind11以及Python.h相应的.lib-file。

当我尝试导入.pydPython解释器内部时,我得到:

C:\Users\Tim.Hilt\source\repos\cr3_converter\Release>dir
 Datenträger in Laufwerk C: ist Acer
 Volumeseriennummer: EC36-E45E

 Verzeichnis von C:\Users\Tim.Hilt\source\repos\cr3_converter\Release

22.01.2020  11:28    <DIR>          .
22.01.2020  11:28    <DIR>          ..
22.01.2020  11:28               808 cr3_converter.exp
22.01.2020  11:28         3.068.361 cr3_converter.iobj
22.01.2020  11:28           785.552 cr3_converter.ipdb
22.01.2020  11:28             1.908 cr3_converter.lib
22.01.2020  11:28         4.190.208 cr3_converter.pdb
22.01.2020  11:28           953.856 cr3_converter.pyd
31.10.2019  16:22        26.408.085 IMG_0482_raw.CR3
               7 Datei(en),     35.408.778 Bytes
               2 Verzeichnis(se), 77.160.587.264 Bytes frei

C:\Users\Tim.Hilt\source\repos\cr3_converter\Release>python
Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 22:39:24) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import cr3_converter
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing cr3_converter: The specified module was not found.
>>> import cr3_converter.pyd
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing cr3_converter: The specified module was not found.
>>>

所需路径.dlls(在这种情况下为Python和OpenCV; LibRaw完全静态链接)在系统路径中设置。

我运行了Dependency-Walker,但找不到任何可疑的东西。这是对应的Dependency Walker图像我还尝试了另一种工具(Dependencies.exe,它本质上是对Dependency Walker的重写,但考虑了API-MS-WIN-CORE-....dlls),并得到了一个错误,看起来像这样:

在此处输入图片说明

当我将鼠标悬停在失踪者上方时.dll,我可以看到一个api-ms-win... module could not be found on disk我搜索并找到了模块,并将其目录路径添加到系统路径。现在,该模块不再以C:\WINDOWS\SysWOW64\WS2_32.dll红色突出显示,但是(屏幕截图顶部的红色突出显示)仍然显示缺少导入。这可能是个问题吗?

我如何制作的.pyd

  • 创建了空的Visual Studio项目(Win32; Python也是32位安装)
  • 将项目设置更改为.dll-configuration和.pyd-fileextension
  • 为OpenCV,LibRaw和Pybind11的头文件添加了包含路径
  • 为OpenCV,LibRaw和Python3.8的链接器添加了路径和输入文件
  • 构建解决方案(无错误,无警告)
  • 试图将结果导入.pydpython解释器

我已经看到了这个问题,在OP中.dlls,库有加载不同Python的问题,但是在我的情况下,Dependency Walker引用的库与我的路径变量中的库相同。

蒂姆·希尔特

我悄悄地假设Windows.dll在与系统(/ users)PATH-variable列出的目录相同的目录中搜索

但是,事实并非如此,正如ProcMon透露的那样。现在,我将缺少的.dlls复制到包含的文件夹中,.pyd一切正常。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从Python解释器运行时,出现“ ImportError:尝试相对导入,没有已知的父包”

尝试导入sklearn模块时出错:ImportError:DLL加载失败:找不到指定的模块

(Tensorflow-GPU)导入tensorflow ImportError:找不到'cudnn64_7.dll'

在32位python解释器中导入64位dll时的ImportError

尝试从URL下载文件时出现“找不到文件”

如何解决:“ ImportError:DLL加载失败,找不到指定的过程。” DLL在那里时

“ ImportError:DLL加载失败:找不到指定的过程”-在使用Keras的Python中使用CNN进行数字识别时

DLL加载失败:导入scipy时找不到指定的模块

尝试遵循FFI示例时出现“找不到功能”

从scipy.linalg导入_fblas:ImportError:DLL加载失败:找不到指定的模块

cx_Freeze ImportError:导入_ctypes时,DLL加载失败失败:找不到指定的模块

ImportError:导入pyexpat时DLL加载失败:找不到指定的模块

导入熊猫python时出错-找不到DLL

发生异常:导入pdftotext时,ImportError DLL加载失败:找不到指定的模块

导入张量流时出现“ ImportError:DLL加载失败”

ImportError:导入_psycopg时DLL加载失败:找不到指定的模块

使用PyInstaller时出现“ ImportError:导入时DLL加载失败”

尝试访问文件共享时出现“找不到网络路径”

收到错误“ DLL加载失败:找不到指定的模块”。在尝试使用PyCharm在Anaconda中导入Windows的Tensorflow时

Python:ImportError:DLL加载失败:找不到指定的模块

在Python中导入xgboost时出现“找不到版本'GOMP_4.0'”-Ubuntu

尝试在Python中导入Prov模块时出现ImportError

导入错误:DLL 加载失败:找不到指定的模块。在尝试导入 TensorFlow 时

导入错误:在导入 tensorflow 时找不到 'cudnn64_7.dll'

如何修复“导入错误:DLL 加载失败:找不到指定的过程”。在导入 tensorflow-gpu 时?

Python DLL 导入错误,找不到模块

导入 mp3 时出现“找不到模块”错误

从 sklearn 导入“kfold”时出现“DLL 加载失败:找不到指定的模块”错误

尝试在python中导入数据时找不到我的firebase实时数据库