简单pybind11模块失败,没有名为的模块
Simple pybind11 module fails with No module named
不久前,我为我的一个项目创建了一个python绑定,现在我想再次使用它。绑定不再工作,因为python无法再导入它——这一切在当时都很好。
然后我决定把它分解成一个最简单的例子:
绑定.cpp
#include <pybind11/pybind11.h>
int add(int i, int j) {
return i + j;
}
PYBIND11_MODULE(TestBinding, m) {
m.doc() = "pybind11 example plugin"; // optional module docstring
m.def("add", &add, "A function which adds two numbers");
}
CMakeLists.txt:
cmake_minimum_required( VERSION 3.2 )
project(TestBinding)
add_subdirectory(pybind11) # or find_package(pybind11)
pybind11_add_module(TestBinding binding.cpp)
# Configure project to inject source path as include directory on dependent projects
target_include_directories( TestBinding
INTERFACE
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/pybind11/include/> )
set_target_properties( TestBinding
PROPERTIES
CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
PREFIX ""
SUFFIX ".so"
)
然后我有一个非常简单的test.py文件,如下所示:
sys.path.insert(0, "/path/to/so/lib/")
from TestBinding import *
一旦执行,总是会给我以下错误:
from TestBinding import *
ModuleNotFoundError: No module named 'TestBinding'
我真的不知道这个世界从它运行良好的时候到现在会发生什么变化。
以下是关于我工作环境的更多信息:
- Windows 10
- Visual Studio 15 2017 Win64
- Python 3.7(也尝试过3.5和3.6(
我错过了什么真正明显的东西吗?
我和你有同样的问题。经过检查,发现问题是由pybind11的python版本与本地环境的python版本不一致引起的。当我调整到相同的python版本时,我的问题得到了解决。
我已经能够通过从CMakeLists.txt
中删除SUFFIX ".so"
规则来解决此问题。这在我最初创建绑定时是需要的,但现在显然不再需要了。
相关文章:
- Pybind11:将元组列表从Python传递到C++
- 尝试导入pybind-opencv模块时出现libgtk错误
- Windows/Cygwin - 不能使用 pybind11 - 犯错误
- 用pybind11包装C++抽象类时出错
- 使用Pybind11向Python公开Eigen::张量
- 如何在C++中使用pybind11加载一个pickle python列表
- 为什么当我解模块化时,这个C++代代码"效率较低"?
- 如果C++对象的类在另一个boost模块中声明,如何使用boost将指向该对象的指针返回到python
- 使用JsonCpp将数据返回到带有pybind11的python会在python调用中产生Symbol not foun
- 内联如何影响模块接口中的成员函数
- C++返回 Numpy 数组的 Python 扩展模块
- 从 pybind11 构建导入模块时出现"分段错误(核心转储)"
- 拆分 pybind11 模块和自动类型转换问题
- Pybind11+nan节点模块冲突
- 简单pybind11模块失败,没有名为的模块
- Python 和 C++ (Pybind11):Python 扩展模块导入错误
- 如何在 Ubuntu 上导入使用 pybind11 创建的模块
- pybind11:属性错误:尝试从 py 文件运行函数时,模块'XXX'没有属性'YYY'
- 如何将 Pybind11 与 CMAKE 一起使用以链接 2 个模块
- 在用户类中包括PYBIND11嵌入式模块的正确方法(作为Singleton类的一部分)是什么?