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

ImportError: /usr/local/lib/libboost

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ImportError: /usr/local/lib/libboost

问题描述:在运行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.mshxw.com
本文地址:https://www.mshxw.com/it/1033117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号