【问题标题】:ImportError: libGL.so.1: cannot open shared object file: No such file or directory while importing OCCImportError: libGL.so.1: cannot open shared object file: No such file or directory while importing OCC
【发布时间】:2020-11-05 08:18:53
【问题描述】:

我有一个部署到 Amazon Elastic Beanstalk(Python 3.7 running on 64bit Amazon Linux 2/3.0.3) 的 Django 应用程序。我已经通过在.ebextensions 文件夹中创建一个10_anaconda.config 文件来安装anacondapythonocc-core 包。

10_anaconda.config;

commands:
  00_download_conda:
    command: 'wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh'
  01_install_conda:
    command: 'bash Anaconda3-2020.02-Linux-x86_64.sh -b -f -p /anaconda'
  02_conda_install_pythonocc: 
    command: '/anaconda/bin/conda install -y -c dlr-sc pythonocc-core=7.4.0'

然后,我在其中一个应用程序中创建了一个文件夹,并在该文件夹中创建了一个 __init__.pycadLoader.py 文件。 我已将 anaconda 路径添加到 __init__.py,它位于 cad 文件夹中;

import sys
sys.path.append('/anaconda/lib/python3.7/site-packages')

我已将导入行添加到cadLoader.py 以供尝试;

import os
from OCC.Extend.DataExchange import read_stl_file
from OCC.Display.SimpleGui import init_display
from OCC.Core.GProp import GProp_GProps
from OCC.Extend.DataExchange import read_step_file
from OCC.Extend.DataExchange import read_iges_file
from OCC.Core.Bnd import Bnd_Box
from OCC.Core.BRepMesh import BRepMesh_IncrementalMesh
from OCC.Core.BRepBndLib import brepbndlib_Add
from OCC.Core.BRepGProp import brepgprop_VolumeProperties

当我将它部署到 Elastic Beanstalk 时,出现以下错误行。

from data.modellib.cad.cadLoader import CADLoader
File "/var/app/current/data/modellib/cad/cadLoader.py", line 2, in <module>
from OCC.Extend.DataExchange import read_stl_file
File "/anaconda/lib/python3.7/site-packages/OCC/Extend/DataExchange.py", line 32, in <module>
from OCC.Core.XCAFDoc import (XCAFDoc_DocumentTool_ShapeTool,
File "/anaconda/lib/python3.7/site-packages/OCC/Core/XCAFDoc.py", line 18, in <module>
from . import _XCAFDoc
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

根据这个问题,我添加了一个用于安装libGL的.config文件,如下所示:

packages:
  yum:
    mesa-libGL : []
    mesa-libGL-devel : []

为了解决version ZLIB_1.2.9 not found 错误,我添加了如下配置文件。

commands:
    00_download_zlib:
        command: 'wget https://github.com/madler/zlib/archive/v1.2.9.tar.gz'
    01_open_zlib:
        command: 'tar xzvf v1.2.9.tar.gz'
    02_into_zlib:
        command: 'cd zlib-1.2.9'
    03_make_zlib:
        command: 'make'
    04_make_install_zlib:
        command: 'make install'
    05_libz_so:
        command: 'ln -fs /usr/local/lib/libz.so.1.2.9 /lib64/libz.so'
    06_libz_so_1:
        command: 'ln -fs /usr/local/lib/libz.so.1.2.9 /lib64/libz.so.1'

但由于make 命令,我的部署失败。这是我的错误信息:

Unhandled exception during build: Command 03_make_zlib failed
Traceback (most recent call last):
  File "/opt/aws/bin/cfn-init", line 171, in <module>
    worklog.build(metadata, configSets)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 129, in build
    Contractor(metadata).build(configSets, self)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 530, in build
    self.run_config(config, worklog)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 542, in run_config
    CloudFormationCarpenter(config, self._auth_config).build(worklog)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/construction.py", line 260, in build
    changes['commands'] = CommandTool().apply(self._config.commands)
  File "/usr/lib/python2.7/site-packages/cfnbootstrap/command_tool.py", line 117, in apply
    raise ToolError(u"Command %s failed" % name)
ToolError: Command 03_make_zlib failed

如何解决此问题并在我的应用程序中使用 OCC 包?

【问题讨论】:

  • 您必须使用系统的包管理器来满足对 libGL 的依赖。对于 ubuntu,你会例如需要做sudo apt-get install libgl1。可能你可以找到一个反向包搜索你的发行版(e.g. this for ubuntu)
  • 我安装了mesa-libGLmesa-libGL-devel。部署成功,但是当我尝试访问该网站时,我收到/lib64/libz.so.1: version ZLIB_1.2.9 not found (required by /anaconda/lib/python3.7/site-packages/OCC/Core/../../../../././././libpng16.so.16) 错误

标签: django amazon-web-services anaconda amazon-elastic-beanstalk pythonocc


【解决方案1】:

/lib64/libz.so.1:未找到版本 ZLIB_1.2.9

Amazon Linux 2 提供版本 1.2.7:

Name        : zlib
Arch        : i686
Version     : 1.2.7
Release     : 18.amzn2
Size        : 91 k
Repo        : amzn2-core/2/x86_64
Summary     : The compression and decompression library
URL         : http://www.zlib.net/
License     : zlib and Boost
Description : Zlib is a general-purpose, patent-free, lossless data compression
            : library which is used by many different programs.

您可以尝试手动将 zlib 升级到 1.2.9,例如以 root 身份执行以下步骤(如果它们有效,您可以通过 .ebextentions 自动执行此操作):


wget https://github.com/madler/zlib/archive/v1.2.9.tar.gz
tar xzvf v1.2.9.tar.gz
cd zlib-1.2.9
./configure
make
make install

ln -fs /usr/local/lib/libz.so.1.2.9 /lib64/libz.so
ln -fs /usr/local/lib/libz.so.1.2.9 /lib64/libz.so.1

这必须仔细测试,因为手动升级可能会破坏。其他一些升级选项是here

新建配置文件

commands:
    00_download_zlib:
        command: |
            wget https://github.com/madler/zlib/archive/v1.2.9.tar.gz
            tar xzvf v1.2.9.tar.gz
            cd zlib-1.2.9
            ./configure
            make
            make install
            ln -fs /usr/local/lib/libz.so.1.2.9 /lib64/libz.so
            ln -fs /usr/local/lib/libz.so.1.2.9 /lib64/libz.so.1

【讨论】:

  • 我现在正在手动尝试。当我运行make install 命令时,我收到mkdir: cannot create directory ‘/usr/local/lib/pkgconfig’: Permission denied make: [install-libs] Error 1 (ignored) cp libz.a /usr/local/lib cp: cannot create regular file ‘/usr/local/lib/libz.a’: Permission denied make: *** [install-libs] Error 1 错误
  • @AslıKök 你必须是 root。 sudo su
  • 现在所有命令都可以工作了。正如你所说,我将创建我的.config 文件。我的.config 文件中是否需要sudo su
  • @AslıKök 你的意思是你的python脚本有效吗?是的,您可以在配置文件中进行设置。配置文件仍然以 root 身份运行。
  • 我已经创建了配置文件并部署了应用程序,但make 命令出现错误。
猜你喜欢
  • 2018-05-22
  • 2020-10-07
  • 2021-02-16
  • 1970-01-01
  • 2020-04-10
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多