我一直在尝试从一篇使用 Kinect Fusion 库的论文中重现一个框架。
当我运行测试脚本时,我收到错误:
(darnn) weizhang@long:~/DA-RNN$ sudo ./experiments/scripts/test_kinect_fusion.sh 0
+ set -e
+ export PYTHONUNBUFFERED=True
+ PYTHONUNBUFFERED=True
+ export CUDA_VISIBLE_DEVICES=0
+ CUDA_VISIBLE_DEVICES=0
++ date +%Y-%m-%d_%H-%M-%S
+ LOG=experiments/logs/test_kinect_fusion.txt.2018-06-17_12-44-13
+ exec
++ tee -a experiments/logs/test_kinect_fusion.txt.2018-06-17_12-44-13
+ echo Logging output to experiments/logs/test_kinect_fusion.txt.2018-06-17_12-44-13
Logging output to experiments/logs/test_kinect_fusion.txt.2018-06-17_12-44-13
+ ./tools/test_kinect_fusion.py --gpu 0 --imdb rgbd_scene_trainval --cfg experiments/cfgs/rgbd_scene.yml --rig data/RGBDScene/camera.json
Traceback (most recent call last):
File "./tools/test_kinect_fusion.py", line 15, in <module>
from kinect_fusion import kfusion
ImportError: libkfusion.so: cannot open shared object file: No such file or directory
它只是说它找不到确实存在的共享对象。它也包括在内,可以通过echo $LD_LIBRARY_PATH
检查为:
/home/weizhang/Pangolin/build/src:/usr/local/cuda-8.0/lib64::/usr/local/cuda/lib64:/usr/local/cuda/extras/CUPTI/lib64:/home/weizhang/DA-RNN/lib/kinect_fusion/build
这可能是一个过于明确的问题,但我很好奇为什么会发生这种情况以及可能解决它的方法。
感谢任何评论!
运行sudo
时,在本地环境中设置的任何环境变量都将丢失。 例如,如果我的本地环境包括:
LD_LIBRARY_PATH=/some/path
然后像我自己一样运行env
,我看到:
$ env | grep LD_LIBRARY_PATH
LD_LIBRARY_PATH=/some/path
$
但是使用sudo
变量是不可见的,因为sudo
会创建一个新的、经过净化的环境:
$ sudo env | grep LD_LIBRARY_PATH
$
最适合您的解决方案可能是在./experiments/scripts/test_kinect_fusion.sh
脚本中设置LD_LIBRARY_PATH
。