Matlab fails to run Python built with Pybind
显示 更早的评论
Attempting to call a member of a user-defined Python module which was built using Pybind. The module seems to import correctly via
mymodule = py.importlib.import_module("mymodule")
But on attempting to access a class from the module, I get this error:
>> myclass = mymodule.myclass
Cannot find class 'py.pybind11_builtins.pybind11_type'.
I've tested that the module loads and works correctly when accessed in Python. I'm using Matlab on Ubuntu, and Python 3.10
6 个评论
Infinite_king
2023-10-16
编辑:Infinite_king
2023-10-16
Are you able to import and use functions in python modules from MATLAB ?
Jay Castro
2023-10-18
Grace Kepler
2023-10-23
This issue could be related to using custom C++ datatypes with pybind11 and currently may be a limitation for Python Interface.
Sylwester Arabas
2023-11-18
For the record, this has also been reported on pybind11 issue tracker back in May 2022: https://github.com/pybind/pybind11/issues/3945 (where pybind11 maintainers suggested to report it to Matlab maintainers).
It's a big showstopper as there are more and more Python packages built using pybind11.
Sylwester Arabas
2023-11-22
Update: a workaround has just been proposed and succesfully tested here: https://github.com/pybind/cmake_example/pull/164
David Truscott
2023-12-11
This is the work-around for that error that worked for me on Windows:
Create a file called 'pybind11_builtins.py' and place it in the folder where your python modules library resides. (For my Python 3.10 installation in Windows, it was {Path to Python Installation} \Lib folder.
The only line in that file should be 'pybind11_type=type' (without the apostrophes).
Reload your pyenv in Matlab,
>>py.importlib.import_module('pybind11_builtins')
>>py.importlib.import_module(' Your originally intended module here')
回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Call Python from MATLAB 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!