我正在为库的 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`"