Could not load dynamic library 'libnvinfer.so.7'
回答 2
浏览 1.6万
2022-12-29
我知道这个问题已经被问过很多次了,但所有的建议似乎都不起作用,可能是因为我的设置有些不同吧。
Ubuntu 22.04
python 3.10.8
tensorflow 2.11.0
cudatoolkit 11.2.2
cudnn 8.1.0.77
nvidia-tensorrt 8.4.3.1
nvidia-pyindex 1.0.9
在创建了一个conda环境'tf'之后,在目录home/dan/anaconda3/envs/tf/lib/python3.10/site-packages/tensorrt
中,我有
libnvinfer_builder_resource.so.8.4.3
libnvinfer_plugin.so.8
libnvinfer.so.8
libnvonnxparser.so.8
libnvparsers.so.8
tensorrt.so
当运行python3 -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
时,我得到的结果是
tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer.so.7';
dlerror: libnvinfer.so.7: cannot open shared object file: No such file or directory;
LD_LIBRARY_PATH: :/home/dan/anaconda3/envs/tf/lib
tensorflow/compiler/xla/stream_executor/platform/default/dso_loader.cc:64] Could not load dynamic library 'libnvinfer_plugin.so.7';
dlerror: libnvinfer_plugin.so.7: cannot open shared object file: No such file or directory;
LD_LIBRARY_PATH: :/home/dan/anaconda3/envs/tf/lib
tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Cannot dlopen some TensorRT libraries. If you would like to use Nvidia GPU with TensorRT, please make sure the missing libraries mentioned above are installed properly.
[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
我猜想我应该降级nvidia-tensorrt
,但我所尝试的一切似乎都不起作用,任何建议都将是非常感激的。
你的LD_LIBRARY_PATH是不正确的,它应该指向包含.so文件的实际文件夹,因为tensorrt不是一个Python库,所以整个pythone.10/Site-packages/tensorrt是完全没有必要的。
- Dr. Snoopy 2022-12-29
@Dr.Snoopy 我不确定我的理解是否正确--我的
LD_LIBRARY_PATH
是/home/dan/anaconda3/envs/tf/lib
,正如错误信息中打印的那样,正是所有.so文件的位置。home/dan/anaconda3/envs/tf/lib/python3.10/site-packages/tensorrt
只是安装tensorrt的位置。
- Daniel von Eschwege 2022-12-31
你说过并在问题中显示.so文件在/home/dan/anaconda3/envs/tf/lib/python3.10/site-packages/tensorrt,另外,你的tensorflow版本似乎期望libnvinfer版本7,而不是你所安装的版本8。
- Dr. Snoopy 2022-12-31
是的,因为
pip install nvidia-tensorrt
把它们放在那里 - 但所有其他.so文件都在/home/dan/anaconda3/envs/tf/lib
下。我应该把tensorrt/
下的文件移到`lib/'吗?
- Daniel von Eschwege 2022-12-31
我也这么认为,这就是为什么我想知道如何降级到第7版?
- Daniel von Eschwege 2022-12-31
2 个回答
#1楼
已采纳
得票数 6
解决办法:按照这里列出的步骤,https://github.com/tensorflow/tensorflow/issues/57679#issuecomment-1249197802。
在~/.bashrc中添加以下内容(用于我的方案中所描述的conda环境)。
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dan/anaconda3/lib/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dan/anaconda3/lib/python3.8/site-packages/tensorrt/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dan/anaconda3/envs/tf/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dan/anaconda3/envs/tf/lib/python3.8/site-packages/tensorrt/
#2楼
得票数 6
对我来说,从libnvinfer
版本7到8的符号链接的设置是有效的。
# the follwoing path will be different for you - depending on your install method
$ cd env/lib/python3.10/site-packages/tensorrt
# create symbolic links
$ ln -s libnvinfer_plugin.so.8 libnvinfer_plugin.so.7
$ ln -s libnvinfer.so.8 libnvinfer.so.7
# add tensorrt to library path
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:~/env/lib/python3.10/site-packages/tensorrt/
ln -s linvinfer.so.8 libnvinfer.so.7
应该是ln -s libnvinfer.so.8 libnvinfer.so.7
,少了一个字母b。
- Q. Qiao 2023-02-19