Sophuspy是由craigstar开发的PyPI包。使用了pybind11对C++的Sophus库进行封装。因此我们可以直接用
pip install sophuspy
来安装使用该包。然而却有bug会导致安装不上:在build wheel的时候(即编python的二进制库文件的时候)会找不到pybind11的路径,导致无法安装。
原因:
开发者对如何制作一个成熟的PyPI包并不了解(我也不懂),导致了实际我们用pip安装sophuspy的时候是这样一个过程:直接拉取源码,然后执行其中的setup.py文件。而setup.py会执行CMake的编译工作,在本地编译pybind项目,因此要用find_package()寻找pybind11的路径。当你本机安装过pybind11的时候可以正常编译;然而当你没有的时候就会出错。
解决方法:
正如开发者给出的方法https://gitmemory.com/issue/craigstar/SophusPy/3/571479318,安装一个pybind11就可以解决。要执行make install使得find_package()能够找到 .cmake 文件。如果你的库文件安装在其他的路径还是会找不到。这时候可以尝试下载源码https://github.com/craigstar/SophusPy,修改CMakeLists.txt文件,添加或制定find_package()的搜索路径,然后使用
pip install -e .
安装本地的版本。
希望有大神能够指出怎样制作一个合格的pybind项目包。
网友评论