报错内容:
Traceback (most recent call last):
File "QBB_TFD_Test.py", line 10, in <module>
from qbbface.QBB_TFD import *
File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD.py", line 6, in <module>
from qbbface.QBB_TFD_Library import *
File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD_Library.py", line 13, in <module>
internalLibrary = CDLL(u'/home/xuqiong/code/imgservice/pyqbbface/lib/libfacedetect.so')
File "/usr/lib/python2.7/ctypes/__init__.py", line 362, in __init__
self._handle = _dlopen(self._name, mode)
OSError: libfundamental.so: cannot open shared object file: No such file or directory
Traceback (most recent call last):
File "QBB_TFD_Test.py", line 10, in <module>
from qbbface.QBB_TFD import *
File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD.py", line 6, in <module>
from qbbface.QBB_TFD_Library import *
File "/home/xuqiong/code/imgservice/pyqbbface/qbbface/QBB_TFD_Library.py", line 13, in <module>
internalLibrary = CDLL(u'/home/xuqiong/code/imgservice/pyqbbface/lib/libfacedetect.so')
File "/usr/lib/python2.7/ctypes/__init__.py", line 362, in __init__
self._handle = _dlopen(self._name, mode)
OSError: libbtplatform.so: cannot open shared object file: No such file or directory
(1)方法一:将这两个动态链接库加入到/usr/local/lib路径中即可
这个方法比较暴力
(2)方法二:命令行修改:LIB_LIBRARY_PATH
该环境变量LIB_LIBRARY_PATH主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径。(该路径在默认路径之前查找)移植程序时的经常碰到需要使用一些特定的动态库,而这些编译好的动态库放在我们自己建立的目录里,这时可以将这些目录设置到LD_LIBRARY_PATH中。
当执行函数动态链接.so时,如果此文件不在缺省目录下‘/usr/local/lib’ and ‘/usr/lib’.
那么就需要指定环境变量LD_LIBRARY_PATH
假如现在需要在已有的环境变量上添加新的路径名,则采用如下方式:
export LD_LIBRARY_PATH=xxx:$LD_LIBRARY_PATH(xxx是新的路径串)
参考文章:https://www.cnblogs.com/mylinux/p/4955448.html
(3)方法三:python脚本修改:LIB_LIBRARY_PATH
LD_LIBRARY_PATH属于进程中的环境变量,Python代码开始运行后是无法修改的,即使通过os.environ['LD_LIBRARY_PATH']='path'来设置也不起作用,有个变通的方式是设置os.environ['LD_LIBRARY_PATH']后,调用os.execv重新启动程序。
前提是python脚本必须是可执行的,如果不可执行,请运行chmod a+x a.py将其变为可执行。
参考文章:https://blog.csdn.net/bodybo/article/details/84648043
(4)方法四:
在调用依赖libfundermental.so库之前,先强行先从/lib路径下load libfundermental.so。因为load face.so时,依赖的库会先从内存里找,如果先强行读取了,则不需要从路径中读了。
如下:
从只调用一个:
强行调用3个: