Импорт pyd в Python (ModuleNotFoundError)

#python #windows #cmake #modulenotfounderror #pyd

Вопрос:

У меня есть библиотека C , в которой я написал привязки с помощью pybind11, которую затем создаю с помощью cmake.

В Linux я получаю файл .so, и я могу импортировать его без проблем:

 build 
   -CMakeCache.txt
   -CMakeFiles
   -cmake_install.cmake
   -Makefile
   -mylib.cpython-39-x86_64-linux-gnu.so
 

И когда я открываю python в той же папке, я могу просто импортировать его без проблем, просто с import mylib

В Windows я создаю его с помощью 64-разрядной версии MSYS с помощью MinGW-w64-x86_64-cmake

cmake -A x64 .. (в то время как в build папке с корнем проекта находится папка выше -> > .. )

Затем для сборки я запускаю cmake --build . --config Release (файлы сборки Visual Studio 15 2017)

Который создает папку «Релиз», в которой находятся 3 файла.

 Release
    - mylib.cp39-win_amd64.pyd
    - mylib.exp
    - mylib.lib
 

Когда я открываю python (как через MSYS, так и через powershell) Я не могу импортировать mylib

 Python 3.9.6 (default, Jul 12 2021, 05:46:11)  [GCC 10.3.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mylib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mylib'
 

Я также попытался переименовать mylib.cp39-win_amd64.pyd в mylib.pyd , что не помогает, но изменяет ошибку

 Python 3.9.6 (default, Jul 12 2021, 05:46:11)  [GCC 10.3.0 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import mylib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: DLL load failed while importing mylib: The specified module could not be found.
 

Я рассматривал другие подобные проблемы с переполнением стека, но ни в одном из них не было ничего, что могло бы мне помочь здесь.