Я собрал .pyd
в Visual Studio 2019 (Community), который предоставляет оболочку для некоторых функций, присутствующих только в LibRaw. Решение успешно компилируется без каких-либо предупреждений или ошибок. В проекте используются LibRaw, OpenCV и pybind11, а также Python.h
и соответствующий .lib
-файл.
Когда я пытаюсь импортировать .pyd
в интерпретаторе Python, я получаю:
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, но не смог найти ничего подозрительного. Вот соответствующее изображение Ходока Зависимости . Я также опробовал другой инструмент ( Dependencies.exe , который по сути является переписанным Dependency Walker, но учитывает API-MS-WIN-CORE-....dlls
) и получил ошибку, которая выглядела так:
![enter image description here](https://i.stack.imgur.com/Mo7S0.png)
При наведении курсора на пропущенный .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 - Добавлены include-пути к файлам заголовков для OpenCV, LibRaw и Pybind11
- Добавлены пути и входные файлы для компоновщика для OpenCV, LibRaw и Python3 .8
- Построение решения (без ошибок, без предупреждений)
- Попытка импортировать
.pyd
в python -interpreter
Я видел этот вопрос , где у ОП возникла проблема с загрузкой библиотекой разных Python - .dlls
, но в моем case библиотека, на которую ссылается Dependency Walker, такая же, как у меня в моей переменной пути.