栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

ImportError: /usr/local/lib/libboost

Python 更新时间:发布时间: 百科书网 趣学号

问题描述:在运行DAVIS2016数据及官方评估代码时,运行python,显示import xxx.so时遇到错误:

"undefined symbol:  PyString_Type"

出现这个问题的首先原因是电脑内同时存在python2.7与python3,所以会遇到问题

打开../stage/lib发现存在的版本为libboost_python27

问题转化为:如何在py2.7与py3的情况下,正确的安装boost,使产生libboost_python3

首先操作是需要卸载boost_python:

sudo rm -rf /usr/local/include/boost
sudo rm -rf /usr/local/lib/libboost*

但是我发现再次重新安装bosst显示失败了,原因:

但是这个这个会删除不完整,还会在系统里面留存boost相关的库,导致你的项目编译的时候总是指向你的本地boost库,还应该删除/usr/local/lib/cmake目录,因为cmake目录里面就是残留的boost库

解决方法:其中第三行删除/usr/local/lib/cmake里的残余,修改为自己下载的版本即可

sudo rm -f /usr/local/lib/libboost*
sudo rm -rf /usr/local/include/boost
sudo rm -rf /usr/local/lib/cmake/*-1.xx.0*

———————————————————————————————————————————

解决方法:python3.6m更改为自己的目录

./bootstrap.sh --with-libraries=python --with-toolset=gcc
./b2 cflags='-fPIC' cxxflags='-fPIC' --with-python include="xxx/anaconda3/include/python3.6m/"
sudo ./b2 install

编译安装成功后,/usr/local/lib下会有libboost_python36.so和libboost_python36.a,有些应用link时需要的是libboost_python3.so或者libboost_python3.a,我们建个软链:

这里需要注意一下,在./bootstrap.sh的时候会有提示检测到python版本,生成的libboost_python文件即该版本,下面软连接的建立需要更换产生的版本

cd /usr/local/lib
sudo ln -s libboost_python-py36.so libboost_python3.so
sudo ln -s libboost_python-py36.a libboost_python3.a

至此,boost完成安装,再进入davis-main文件夹进行cmake,产生tstab.so文件,复制至py文件目录,运行,解决报错

参考连接:boost编译libboost_python3_bodybo的博客-CSDN博客

转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/1033117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号