#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.
Я рассматривал другие подобные проблемы с переполнением стека, но ни в одном из них не было ничего, что могло бы мне помочь здесь.