ImportError:libboost_python.so.1.65.1:无法打开共享对象文件:没有这样的文件或目录

时间:2017-10-25 14:13:04

标签: python dlib

首先,我使用的是ARM7架构。 我使用预构建的轮文件dlib下载了dlib-19.7.0-cp27-cp27mu-linux_armv7l.whl库并下载了Boost.python库并为python库构建了它们,并且在python2.7中import dlib时我得到了该错误< / p>

>>> import dlib
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/dlib/__init__.py", line 1, in <module>
from .dlib import *
ImportError: libboost_python.so.1.65.1: cannot open shared object file: No such file or directory

然后我在我的目录中搜索libboost_python.so.1.65.1并找到它

:~# whereis libboost_python.so.1.65.1
libboost_python.so.1.65: /usr/local/lib/libboost_python.so.1.65.1

并发现路径(/ usr / local / lib /)不是PATH变量的一部分,所以,我添加了它

:~# export PATH=$PATH:/usr/local/lib

并确保它正确放置

:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/local/lib

再次尝试但没有,出现同样的错误。我还使用libboost-all-dev安装了apt-get并在此之后生成update,但也出现了同样的错误。那么,这个错误的原因是什么,我该如何克服呢?

感谢您的建议。

1 个答案:

答案 0 :(得分:3)

我有同样的错误。 不需要安装libboost-dev-所有这都是一种过度杀伤......

你没有正确编译python的libboost。 我已经做了同样的事情但只有一个标志--with-libraries = python并且得到完全相同的错误。

我知道我的编译不好,一些试验让我做这项工作。

wget https://dl.bintray.com/boostorg/release/1.65.1/source/boost_1_65_1.tar.gz \
&& tar zxf boost_1_65_1.tar.gz \
&& cd boost_1_65_1 \
&& ./bootstrap.sh --with-libraries=python --with-python=python3.5 \
&& ./b2 install

注意标志--with-python = python3.5你可能需要传递python2.7而不是

这里有你如何测试它:

import dlib
import numpy as np
image = np.arange(100*100*3).reshape(100, 100, 3)
fd = dlib.get_frontal_face_detector()
faces, scores, _ = fd.run(image, 0, 0)
faces, scores, _ = fd.run(image, 0, -100)
print(scores)

-2.38875
-2.77087
-2.82851
-2.84197
-3.05489
-3.0879

如果你收到这样的错误:

>>> import dlib
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.5/dist-packages/dlib/__init__.py", line 1, in <module>
    from .dlib import *
ImportError: libboost_python3.so.1.65.1: cannot open shared object file: No such file or directory

确保将/ usr / local / lib添加到LD_LIBRARY_PATH

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH