Python 3.x 使用pybind11扩展和嵌入Python 3.5时出错
我开始玩图书馆了。这是一个非常好的库,有很好的文档记录,对我来说很有用,但只适用于Python2.7。我无法让它在Python3.5上运行,我不知道我做错了什么 这是我的“hello world”节目: 但是,如果我将完全相同的代码链接到Python3.5,则加载模块时会出错Python 3.x 使用pybind11扩展和嵌入Python 3.5时出错,python-3.x,pybinding,Python 3.x,Pybinding,我开始玩图书馆了。这是一个非常好的库,有很好的文档记录,对我来说很有用,但只适用于Python2.7。我无法让它在Python3.5上运行,我不知道我做错了什么 这是我的“hello world”节目: 但是,如果我将完全相同的代码链接到Python3.5,则加载模块时会出错 Traceback (most recent call last): File "<string>", line 1, in <module> ImportError: No module na
Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named 'hello'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
ImportError:没有名为“hello”的模块
有什么想法吗?你是如何编译这个库的?你使用的是什么系统?如果您使用了python配置,正如他们文档中的基本示例(下面的命令)中所建议的那样,那么您将根据机器上的开发版本进行编译
c++ -O3 -shared -std=c++11 -I <path-to-pybind11>/include `python-config --cflags --ldflags` example.cpp -o example.so
<代码> C++ +3O-共享-STD= C++ 11 -I/包含“python配置-cFLAGS -LDFLAGG”示例.CPP-O示例
即使使用Python3.5,也可能是Python2.7。在我的例子中,我使用Anaconda安装python,这使我获得了python 3.5,但系统python仍然是2.7
python配置提供了什么?是否列出了Python 3.5的版本?如果不是,则至少在没有修改的情况下,您不能使用此命令。您可以做的是按照他们的文档中所描述的方式构建cmake系统。那帮我修好了。使用他们的setuptools系统,可能也会起作用。基本上,他们会找出您用来编译其库并使用这些标志的内容。这确实意味着,在构建库本身时,必须确保您是针对Python3.5进行链接的 您是如何编译库的?您使用的是什么系统?如果您使用了python配置,正如他们文档中的基本示例(下面的命令)中所建议的那样,那么您将根据机器上的开发版本进行编译
c++ -O3 -shared -std=c++11 -I <path-to-pybind11>/include `python-config --cflags --ldflags` example.cpp -o example.so
<代码> C++ +3O-共享-STD= C++ 11 -I/包含“python配置-cFLAGS -LDFLAGG”示例.CPP-O示例
即使使用Python3.5,也可能是Python2.7。在我的例子中,我使用Anaconda安装python,这使我获得了python 3.5,但系统python仍然是2.7
python配置提供了什么?是否列出了Python 3.5的版本?如果不是,则至少在没有修改的情况下,您不能使用此命令。您可以做的是按照他们的文档中所描述的方式构建cmake系统。那帮我修好了。使用他们的setuptools系统,可能也会起作用。基本上,他们会找出您用来编译其库并使用这些标志的内容。这确实意味着,在构建库本身时,必须确保您是针对Python3.5进行链接的 看一看,看一看
c++ -O3 -shared -std=c++11 -I <path-to-pybind11>/include `python-config --cflags --ldflags` example.cpp -o example.so