Boost:未找到 pyconfig.h

Boost:未找到 pyconfig.h

我正在为库的 python 绑定设置 boost-python。以前,boost 已安装但链接到 python2.7。经过一番折腾,之前安装的 boost 中的所有内容都消失了,我正在尝试安装新的 boost。

我使用的是 Linux Mint 和 Anaconda,其中 Python 版本为 3.6.8。它在 CLI 中运行正常:python --version 给出 3.6.8

然后我开始按照构建 boost 的说明进行操作:https://www.boost.org/users/history/version_1_69_0.html

我从其他线程获得的信息是这样做:

sudo apt-get install python3-dev

由于我有 anaconda3,我不确定我是否应该这样做,但无论如何,我做到了。

./bootstrap.sh

这里创建了文件 project-config.jam 并且有关 python 的行显示:

using python : 3.6 : /home/myUser/anaconda3 ; 

然后我继续用 b2 进行构建:

sudo ./b2 --with-python -j8 install

安装失败,结果显示一大堆这样的文字:

./boost/python/detail/wrap_python.hpp:50:11: fatal error: 
pyconfig.h: No such file or directory
# include <pyconfig.h>
          ^~~~~~~~~~~~
compilation terminated.

当我在 ~/anaconda3/include/python3.6m 中搜索时,文件 pyconfig.h 出现在预期的位置

我是否应该向 b2 或 bootstrap 提供更多信息?

编辑:./b2 给出的第一行是:

warning: failed to open log file bin.v2/config.log for writing

经过几行检查:

config-cache.write bin.v2/project-cache.jam
/bin/sh: 2: cannot create bin.v2/project-cache.jam: Permission denied
...failed config-cache.write bin.v2/project-cache.jam...
...failed updating 1 target.

答案1

我按照指示vmf91简单来说,你输入:

python --version
pythonX.Y-config --includes --libs

XY 是您从第一个命令获得的主要版本和次要版本。您选择第二个命令返回的第一个元素并将其包含在以下命令中。

export CPLUS_INCLUDE_PATH="$CPLUS_INCLUDE_PATH:/the/previous/path/without/the/I"

然后再次运行 b2。大功告成!对我来说,它在 CentOS 集群上运行良好,而我没有任何权限。

答案2

尝试b2这样运行:

./b2 cxxflags="`python3-config --includes`" linkflags="`python3-config --libs`"

相关内容