Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 使用pybind11扩展和嵌入Python 3.5时出错_Python 3.x_Pybinding - Fatal编程技术网

Python 3.x 使用pybind11扩展和嵌入Python 3.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

我开始玩图书馆了。这是一个非常好的库,有很好的文档记录,对我来说很有用,但只适用于Python2.7。我无法让它在Python3.5上运行,我不知道我做错了什么

这是我的“hello world”节目:

但是,如果我将完全相同的代码链接到Python3.5,则加载模块时会出错

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