导入OpenCV时出现“ImportError: libXrender.so.1:无法打开共享对象文件”的错误

22

我在导入OpenCV时遇到了问题。

环境:

  • Python 3.6.1
  • Linux(HPC服务器)
  • OpenCV 3.4.3.18

错误描述:

我尝试导入cv2,但是在成功安装后(Requirement already satisfied: opencv-python in /home/users/czxu/.local/lib/python3.6/site-packages (3.4.3.18)),使用命令import cv2时出现了缺少文件夹或脚本的提示:

Traceback (most recent call last):
  File "scripts/preprocessing/gen_mini_batches.py", line 4, in <module>
    from avod.builders.dataset_builder import DatasetBuilder
  File "/home/users/czxu/avod/avod/builders/dataset_builder.py", line 6, in <module>
    from avod.datasets.kitti.kitti_dataset import KittiDataset
  File "/home/users/czxu/avod/avod/datasets/kitti/kitti_dataset.py", line 11, in <module>
    from wavedata.wavedata.tools.core import calib_utils
  File "/home/users/czxu/avod/wavedata/wavedata/tools/core/calib_utils.py", line 3, in <module>
    import cv2
  File "/home/users/czxu/.local/lib/python3.6/site-packages/cv2/__init__.py", line 3, in <module>
    from .cv2 import *
ImportError: libXrender.so.1: cannot open shared object file: No such file or directory
srun: error: sh-06-20: task 0: Exited with exit code 1

我去了文件夹 /home/users/czxu/.local/lib/python3.6/site-packages/cv2/

czxu@cv2$cd /home/users/czxu/.local/lib/python3.6/site-packages/cv2
czxu@cv2$ls -a
.  ..  cv2.cpython-36m-x86_64-linux-gnu.so  data  __init__.py  .libs  LICENSE-3RD-PARTY.txt  LICENSE.txt  __pycache__

你对此有任何想法吗?真诚地欢迎回答和讨论。

3个回答

38

我遇到了同样的问题(Python 3.6.6,opencv 3.4.3.18,Ubuntu 18.04)。我通过安装libXrender来解决它:

sudo apt-get install libxrender1

这个问题在这里有记录。安装完毕后,我可以import cv2


1
yum -y install libSM-1.2.2-2.el7.x86_64 --setopt=protected_multilib=false
yum -y install libXext-1.3.3-3.el7.x86_64 --setopt=protected_multilib=false

虽然这段代码可能解决了问题,但是包括解释它如何以及为什么解决了问题将有助于提高您的帖子质量,并可能导致更多的赞。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人。请[编辑]您的答案以添加解释并指出适用的限制和假设。来自审核 - double-beep
我正在使用CentOS Linux发行版7.9.2009(核心),带有Linux 3.10.0-1160.36.2.el7.x86_64,并且它显示这些库已经安装。 - Chaminda Bandara

0

针对CentOS和RHEL:

yum install libXrender

可以通过以下命令验证所需的软件包(不同版本):

yum whatprovides libXrender

对于其他缺失的libX*.so,使用相同的软件包命名约定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接