I have a Django application which it's deployed to Amazon Elastic Beanstalk(Python 3.7 running on 64bit Amazon Linux 2/3.0.3)
. I have installed anaconda
and pythonocc-core
package by creating a 10_anaconda.config
file in .ebextensions
folder.
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'
Then I have created a folder in one of my apps and created a __init__.py
and cadLoader.py
file into that folder.
I have added the anaconda path to __init__.py
which it's in the cad
folder;
import sys
sys.path.append('/anaconda/lib/python3.7/site-packages')
And I have added the import lines to cadLoader.py
for trying;
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
When I deployed it to Elastic Beanstalk, I got the error lines below.
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
According to this issue, I have added a .config file for installing libGL
such as below:
packages:
yum:
mesa-libGL : []
mesa-libGL-devel : []
And in order to solve the version ZLIB_1.2.9 not found
error, I added a config file like the one below.
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'
But my deployment is failed because of the make
command. Here is my error message:
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
How can I fix this issue and use the OCC package in my application?
Amazon Linux 2 provides version 1.2.7:
You can try manually upgrading the zlib to 1.2.9, for example performing the following steps as root (if they work, you can automated this through
.ebextentions
):This have to be carefully tested, as manual upgrades can break things. Some other options for upgrades are here.
New config file